第一个问题:SPI的flash一般是干嘛用的 ?
IAP远程升级?放字库图片?放FATFS的文件系统来实现malloc?
先放着,第二个问题,它的内部存储结构。
截图是STM32内部的flash 其实跟我们的W25是一样的,
STM32F103的最小单元是page,一个page是2K也就是最少要擦除2K。
地址的起始已经写好了就是0X0800 0000.
W25的最小单元是Sector,一个Sector是4K也就是最少要擦除4K。
地址的起始就是0.
#define W25_Sector0 0X00000000
#define W25_Sector1 1024*4*1
#define W25_Sector2 1024*4*2
#define W25_Sector3 1024*4*3
#define W25_Sector4 1024*4*4
其实也可以写
#define W25_Sector0 0X00000000
#define W25_Sector1 0X00001000
#define W25_Sector2 0X00002000
#define W25_Sector3 0X00003000
#define W25_Sector4 0X00004000
选择哪个方式呢?那就看你怎么设计的。
关键字:STM32 SPI FLASH W24Q64
引用地址:
STM32之SPIFLASH W24Q64的结构
推荐阅读最新更新时间:2024-11-08 06:09
STM32学习笔记—CAN总线收发数据常见问题分析
CAN,Controller Area Network(控制器局域网络),在汽车电子、工业控制领域的应用比较多,通常用于局域组网。 这是第9篇学习分享文章,《STM32学习笔记》之CAN总线收发数据常见问题分析。 CAN总线和UART、I2C、SPI总线最大的区别主要在于取消了传统的地址编码方式,理论上讲总线上的互联节点数不受限制,拥有强大的握手与出错管理及重发机制,具有很强的抗干扰能力。 STM32 CAN 基础内容 CAN网络中主要由CAN控制器和CAN收发器组成,大部分STM32内部都集成了CAN控制器,如果需要使用CAN功能,还需要在外部连接一个CAN收发器才能使用。 ▲ CAN 网络拓扑结构图 STM32内部
[单片机]
STM32_外部中断线/事件线理解
这张图是一条外部中断线或外部事件线的示意图,图中信号线上划有一条斜线,旁边标志19字样的注释,表示这样的线路共有19套。图中的蓝色虚线箭头,标出了外部中断信号的传输路径。 首先外部信号从编号1的芯片管脚进入,经过编号2的边沿检测电路,通过编号3的或门进入中断挂起请求寄存器,最后经过编号4的与门输出到NVIC中断检测电路,这个边沿检测电路受上升沿或下降沿选择寄存器控制,用户可以使用这两个寄存器控制需要哪一个边沿产生中断,因为选择上升沿或下降沿是分别受2个平行的寄存器控制,所以用户可以同时选择上升沿或下降沿,而如果只有一个寄存器控制,那么只能选择一个边沿了。 接下来是编号3的或门,这个或门的另一个输入是软件中断/事件寄存器
[单片机]
STM32的CAN总线中继器设计及应用
引言 CAN总线是一种多主方式的串行通信总线,具有优良的稳定性、实时性、远程通信能力以及超强的硬件CRC纠错等特性;CAN总线技术的应用不再仅限于汽车行业,而是扩展到了机械、纺织、控制等行业,并被公认为是最有前途的现场总线之一。然而由于受制于CAN收发器,CAN总线通信距离和网络中节点数被分别限制在10 km和110个之内。但是在稍大型的CAN总线系统中,这往往是不够的,这时就需要用CAN总线中继器对CAN总线网络进行扩展。 CAN中继器是系统组网的关键技术设备之一,使用中继器可以提高网络设计的灵活性,并且通过中继器还可以连接两个不同波特率的CAN总线网络;在两个网络间进行数据转发,极大地扩展其使用范围。基于此,本文设计出一款
[单片机]
STM32堆栈空间大小设置
1. 设置堆栈空间大小 在使用STM32编程时,一般情况下我们不会关注堆栈空间的大小,因为在STM32的启动文件中,已经帮我们预先设置好了堆栈空间的大小。如下图所示的启动代码中,Stack栈的大小为:0x400(1024Byte),Heap堆的大小为:0x200(512Byte)。 这也是为什么一个基础的工程编译后,RAM的空间也占用了1.6K左右的原因,因为堆栈的空间均分配在RAM中,可在编译的map文件中查看RAM资源占用的情况。 若工程中使用的局部变量较多,定义的数据长度较大时,若不调整栈的空间大小,则会导致程序出现栈溢出,程序运行结果与预期的不符或程序跑飞。这时我们就需要手动的调整栈的大小。 当工程中使用了
[单片机]
STM32按键消抖——入门状态机思维
在嵌入式软件开发中,状态机编程是一个十分重要的编程思想,它也是嵌入式开发中一个常用的编程框架。掌握了状态机编程思想,可以更加逻辑清晰的实现复杂的业务逻辑功能。 1 状态机思想 状态机,或称有限状态机FSM(Finite State Machine),是一种重要的编程思想。 状态机有3要素:状态、事件与响应 状态:系统处在什么状态? 事件:发生了什么事? 响应:此状态下发生了这样的事,系统要如何处理? 状态机编程前,首先要根据需要实现的功能,整理出一个对应的状态转换图(状态机图),然后就可以根据这个状态转换图,套用状态机编程模板,实现对应是状态机代码了。 状态机编程主要有 3 种方法:switch-case 法、表格驱动法、函数
[单片机]
stm32专题十三:DMA(一)结构框图
DMA(data memory access)直接存储器访问,和串口USART、GPIO一样,也是一个外设。 把数据从一个地方搬到另一个地方,而不占用CPU。像串口发送数据,数据是一个一个的发。CPU首先把数据从内存(数组)拿到CPU内部的寄存器(CPU内部有一组暂存数据寄存器R1、R2、R3等),然后再发到串口的数据寄存器USART_DR,这些过程一直需要占用CPU。而当我们使用DMA时,如果CPU给DMA一个命令(把数据从内存发到串口),这时DMA就会实现这个功能,整个过程CPU是空闲的,可以去做其他事。比如,点亮一个LED,显示液晶屏LCD等。 DMA支持3种模式: Memory to Memory (这里的Me
[单片机]
STM32学习笔记之定时器输入捕获实验
实验目的: 在串口调试助手上打印出按键按下的时间 实验步骤: 实验程序: /*******************************timer.c********************************/ #include sys.h #include stm32f4xx.h extern u8 TIM5CHA1_CAPTURE_STA; extern u16 TIM5CHA1_CAPTURE_VAL; /* 本示例的作用就是, 当按键按下时,每次输入捕获的时间差, 然后从串口调试助手中打印出其时间差; */ /*
[单片机]
基于STM32和FPGA的CAN总线运动控制器的设计
如今,运动控制正朝着高速度、高精度、开放式的方向发展,从而对执行部件提出了更高的要求。过去的运动控制器主要是基于单片机或者PLC加上分立数字电路设计,受制于器件本身的性能,导致电路执行速度慢、体积庞大、集成程度低,升级难度大。而采用微处理器、DSP、FPGA等现代手段构成的只能控制系统是新一代运动控制发展的方向。本文对基于FPGA的嵌入式运动控制器进行了研究,并应用了CAN总线,使硬件接口简单、实时性强、灵活度高,有很强的实用价值。 1 总体方案设计策略 本系统以意法半导体体公司生产的基于Cortex—M3处理器STM32F103VBT6芯片核心进行通信、数据的存储以及键盘扫描和LCD显示,它集成了CAN、SPI、USB、
[单片机]