STM32f103VE学习之预备知识

**

STM32f103VE 预备知识

**
ISP(In-System Programming):在系统可编程,指电路板上的芯片可以编程写入最终用户代码, 而不需要从电路板上取下器件,已经编程的器件也可以用 ISP 方式擦除或再编程。
即可以通过一种可用的串行外设( USART、 CAN、 USB、 I2C 等)将应用程序下载到内部 Flash 中。无需将芯片取下,用特定的编码器进行编码。

Bootloader(自举程序) :与ISP配套,其主要任务是通过一种可用的串行外设( USART、 CAN、 USB、 I2C 等)将应用程序下载到内部 Flash 中 和 初始化硬件设备、建立内存空间映射图。(自举存储在system flash)。

通讯方式

波特率(Bd):可以通俗的理解为一个设备在一秒钟内发送(或接收)了多少码元的数据。
如每秒钟传送240个字符,而每个字符格式包含10位(1个起始位,1个停止位,8个数据位),这时的波特率为240Bd,比特率为10位*240个/秒=2400bps。又比如每秒钟传送240个二进制位,这时的波特率为240Bd,比特率也是240bps。

比特率(bps):bit/s = bps。

并行:多个通道同时传输。

串行:单个通道传输。

*keynote*
在网络通信h过程中,通信双方要交换数据,需要高度的协同工作。为了正确的解释信号,接收方必须确切地知道信号应当何时接收和处理,因此定时是至关重要的。在计算机网络中,定时的因素称为位同步同步是要接收方按照发送方发送的每个位的起止时刻和速率来接收数据,否则会产生误差。通常可以采用同步或异步的传输方式对位进行同步处理。

位同步:位同步是指数字传输中,数字信号码元时间对齐的过程从信息码流中提取时钟信号,并借助于时钟信号来识别信息码元的定时提取过程。实现位同步的方法主要有外同步法和自同步法两种:
外同步法:外同步的方法是,发送端发送数据之前先发送同步时钟信号,接收方用这一同步信号来锁定自己的时钟脉冲频率,以此来达到收发双方位同步的目的;
自同步法:接收方利用包含有同步信号的特殊编码(如曼彻斯特编码)从信号自身提取同步信号来锁定自己的时钟脉冲频率,达到同步目的。
同步传输
1.接收方和发送方用同一时钟源或通过外部线路协调统一时序。
2.面向数据帧,带同步字符,开销小。
3.随着数据帧中实际数据比特位的增加,开销比特所占的百分比将相应地减少。但是,数据比特位越长,缓存数据所需要的缓冲区也越大,这就限制了一个帧的大小。另外,帧越大,它占据传输媒体的连续时间也越长。在极端的情况下,这将导致其他用户等得太久。
异步传输
1.不要求接收方和发送方时钟一致。
2.面向字符,带开始位和结束位,开销大。
3.异步传输通过字符起止的开始和停止码抓住再同步的机会。

同步异步总结
同步传输无论帧内的位还是帧与之间的间隔位都是位同步的;
异步传输字符之间的位是异步的,字符内是同步的。

摘自
位同步
例子
同步异步传输详解

单工:单向传输。
半双工:单方向传输,方向可换。
全双工:双方向传输。PS:要求一端同时有RXD 和 TXD。

串行外设:
UART(全双工,异步)
USART (全双工,同步/异步)
SPI
I2C

STM32主要由内核和片上外设组成。
这里写图片描述
这里写图片描述
内核由ARM提供,片上外设由STM设计。

总线(bus):连接多个设备的数据传输通道。

ICode总线 :用于取指,内核读取flash中的code。
DCode总线:D 指的是Data,数据分两种:常量和变量,const修饰的常量存放于const flash 中,变量存放于SRAM中。DCode 用于取数。
DMA总线:用于传输数据,可以是外在的存储器,也可以是SRAM,FLASH。主要是用于存储器之间数据传递。PS: 传递数据时无需经过CPU。DMA
System总线:用于访问外设寄存器,设置寄存器,用于寄存器编程。
PS:DCode总线和DMA总线都可以访问存储器进行取数,所以要有个总线矩阵进行仲裁。
System总线不知道为什么要经过总线矩阵仲裁,有知道的留下言!!

存储器的映射
存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存储器分配地址 的过程就称为存储器映射
存储器映射

Block 0: Code 0x0000 0000 ~ 0x1FFF FFFF(512MB)
Block 1: SRAM 0x2000 0000 ~ 0x3FFF FFFF(512MB)
Block 2: 片上外设 0x4000 0000 ~ 0x5FFF FFFF(512MB)
Block 3: FSMC的 bank1 ~ bank2 0x6000 0000 ~ 0x7FFF FFFF(512MB)
Block 4: FSMC的 bank3 ~ bank4 0x8000 0000 ~ 0x9FFF FFFF(512MB)
Block 5: FSMC 寄存器 0xA000 0000 ~ 0xCFFF FFFF(512MB)
Block 6: 没有使用 0xD000 0000 ~ 0xDFFF FFFF(512MB)
Block 7: Cortex-M3内部外设 0xE000 0000 ~ 0xFFFF FFFF(512MB)

BLOCK0:
选项字节:用于配置读写保护、 BOR 级别、软件/硬件看门狗以及器 件处于待机或停止模式下的复位。当芯片不小心被锁住之后,我们可以从 RAM 里面启动来修改这部分相应的寄存器位。0x1FFF F800 - 0x1FFF F80F
系统存储器:里面存的是ST出厂时烧写好的 isp自举程序 ( 即 Bootloader),用户无法改动。串口下载的时候需要用到这部分程序。 0x1FFF F000- 0x1FFF F7FF
预留 0x0808 0000 ~ 0x1FFF EFFF
FLASH:我们的程序就放在这里。 0x0800 0000 ~ 0x0807 FFFF (512KB)
预留 0x0008 0000 ~ 0x07FF FFFF
取决于BOOT引脚,为FLASH、系统存储器、SRAM的别名。 0x0000 0000 ~ 0x0007 FFFF
keynote
PS: 系统复位或上电后,从0x0000 00000开始启动。0X0000 0000 的别名由BOOT[1,0]决定。
上电或复位后,SYSCLK第四个上升沿后,BOOT的引脚值会被锁存,无法再改变。
这里写图片描述

BLOCK1:
预留 0x2001 0000 ~ 0x3FFF FFFF
SRAM 64KB 0x2000 0000 ~0x2000 FFF

BLOCK2:
APB1外设 0x4000 0000 ~ 0x4000 77FF
APB2外设 0x4001 0000 ~ 0x4001 3FFF
AHB外设 0x4001 8000 ~ 0x5003 FFFF

博主也是在学习中,如有错误还望指出。

猜你喜欢

转载自blog.csdn.net/qq_36203399/article/details/82019994