空间设计_头像大全_壁纸设计_空间代码

  • 400-800-1234
  • 打造本地最大生活服务平台
搜索
猜你喜欢
查看: 156|回复: 0

STM32芯片开发之添加外置NOR FALSH扩展代码空间

[复制链接]

420

主题

420

帖子

1308

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1308
发表于 2020-4-21 14:38:53 | 显示全部楼层 |阅读模式
  网上查了很多资料,但都很零碎不是很完整,这里我系统总结一下从0开始建立一个使用外部NOR Flash的程序的方法。
  Nor Flash是通过FSMC总线可以直接读写的Flash存储器,掉电不丢失,相比NandFlash成本高,容量小,但可以作为程序存储器使用,即可以直接在NorFlash上执行代码,NandFlash虽然也可以执行代码,在至少在STM32中是不支持的,可能ARM7都是不支持的。
  STM32本身Flash容量较小,不能建立大型项目,或者在代码中有大量数据时就不够用了,至少在我一直STemWin时就不能全开所有的Demo程序,很不爽。当然你将数据存储在SD卡或Flash中在通过修改代码实现数据的读取,但中会有直接读取数组方便吗?而且读取数据也不能一次全部读出来,不然RAM又不够用了,得分多次读,不然就得在外扩RAM,怎么都没有以代码形式读取NorFlash方便。
  2.配置MDK环境,设置外部ROM地址,长度,并添加第一步生成的Flash算法。
  x是你的MDK安装的盘符,Keil_v5是你MDK安装的目录,老版本是Keil。


  其中主要注意两点,一是增加宏定义SST39x160x,这个随你喜好起名,只要后面用到时跟这个一致就行。二是将基地址由0x000000改为0x64000000,这个是STM32连接NorFlash的地址,如果你的不是就按照你的实际情况修改。
  另外还要修改FlashPrg.c文件,其中Nor Flash是16位还是8位模式,一定要搞清楚,尤其是在发送命令和写数据时。
  Nor Flash是挂在FSMC总线上的,该算法要有FSMC总线的初始化,且要写在初始化函数里。即
  2.配置MDK环境,设置外部ROM地址,长度,并添加第一步生成的Flash算法。
  新建一个项目或打开你现有的项目,不过你的项目一定要有你的NorFlash的初始化代码,不然放在NorFlash中的代码还是不能执行。
  在你的项目中在用的NorFlash的代码前必须完成对NorFlash的初始化。

  选中你想要放置在NorFlash中的代码文件,或文件夹,右键,选中属性设置。

  本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
  ;那么短接完成,如果再采用20针调试的时候就要注意了,jlink的3.3V千万不要与开发板上20针接口的3.3V接在一块,否则会有烧坏jlink的可能,这个时候就要设置jlink不给开发板供电了。楼主的解决方式是在jlink的2脚上加了一个开关,当需要jlink给开发板供电的时候,开关打到3.3V上,当不需要内部供电的时候呢打到悬空上。这样就可以同时使用三线线的JTAG与SWD调试方式了。/************************************************************/我自己遇到的问题是烧写stm32f103c8t6 硬件环境:只接SWD、SWCLK、GND 三根线,在接外部
  最近一年多开始使用STM32F4系列芯片,在使用开发板、评估板的时候一切正常,但当自己做板子的时候事故频发,最典型的就是无法启动、无法刷机,现将遇到的几个无法启动的原因分析如下:1、芯片引脚短路这是最典型的现象,也是最常见的原因,一般不工作的时候第一反应就是检查是否发生短路,短路引发芯片无法正常工作。2、芯片VCAP引脚没有接电容有一次自己做的板子,忘记在VCAP引脚引出电容,导致一直无法工作,经查Datasheet,发现VCAP引脚是专为芯片内部1.2V区域供电所用,若没有引出电容,1.2V区域将无法正常工作。3、芯片VDDA(VREF)引脚没有供电一次做AD转换,为求精确,将VDDA(VREF)引脚接上一个稳压器,并且为
  存储器采用固定的存储器映射,代码区域起始地址为0x0000_0000(通过ICode/DCode总线访问),而数据区域起始地址为0x2000_0000(通过系统总线访问)。Cortex™-M4F CPU始终通过ICode总线获取复位向量,这意味着只有代码区域(通常为 Flash)可以提供启动空间。STM32F4xx微控制器实施一种特殊机制,可以从其它存储器(如内部SRAM)进行启动。在STM32F4xx中,可通过BOOT[1:0]引脚选择三种不同的启动模式,如下表1所示。复位后,在SYSCLK的第四个上升沿锁存BOOT引脚的值。复位后,用户可以通过设置BOOT1和BOOT0引脚来选择需要的启动模式。BOOT0为专用引脚
  STM32F4时钟系统的知识在《STM32F4中文参考手册》第六章复位和时钟控制章节有非常详细的讲解,网上关于时钟系统的讲解也有很多,讲不出啥特色,时钟模块是芯片非常重要的组成部分,我们必然要提到时钟系统的知识。这些知识也不是什么原创,纯粹根据官方提供的中文参考手册和自己的应用心得来总结的,如有不合理之处望大家谅解。STM32F4时钟树概述众所周知,时钟系统是CPU的脉搏,就像人的心跳一样。所以时钟系统的重要性就不言而喻了。STM32F4的时钟系统比较复杂,不像简单的51单片机一个系统时钟就可以解决一切。于是有人要问,采用一个系统时钟不是很简单吗?为什么STM32要有多个时钟源呢?因为首先STM32本身非常复杂,外设
  优先级有些区别,并没有抢占优先级和子优先级的说法。在STM32F407中,内核外设的中断优先级由内核SCB这个外设的寄存器:SHPRx(x=1.2.3)来配置。有关SHPRx寄存器的详细描述可参考《Cortex-M4内核编程手册》4.4.8章节。本文完结!
  ADI基于ADPD188BI的烟雾探测器集成解决方案 有奖直播 5月13日上午10:00-11:30 为您揭晓!
  【技术直播】 MPS、Nexperia、泰克专家齐聚,畅谈新能源汽车动力设计注意要点
  RISC-V安全之地——数十亿嵌入式设备安全解决方案|Microchip技术直播报名
  最新意法半导体STM32WBx0超值无线MHz, 新一代STM32MP1如何破格
  STM32MP1系列通用型MPU, 集成双 Arm® Cortex®-A7和 Cortex®-M4 内核


  51单片机PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程
回复

使用道具 举报

使用 高级模式(可批量传图、插入视频等)
您需要登录后才可以回帖 登录 | 立即注册

快速回复 返回顶部 返回列表