芯片手册学习总结

单片机(single-chip microcomputer)是一种集成的数字电路芯片,将具有数据处理能力的中央处理器CPU,随机存储RAM,多种IO口和中断系统,定时器\计数器等功能(包括显示驱动电路、脉宽调制电路、模拟转换电路、A/D转换器等电路)集成到一块硅片上的小而完善的微型计算机系统。芯片的内核假设是32位处理器时,则芯片总的地址为0 ~ 0xFFFFFFFF,大概有4G多点的空间。芯片中除了存储单元需要占用存储单元,各种外设(UART,定时器,LCD等)及GPIO口都需要分配内存地址。芯片总共4G多的地址就需要给存储单元和各种外设进行分配地址。

  • 刚刚介绍了单片机的芯片就是一个微型的计算机系统,芯片里面集成的各个小系统总结如下图:
    芯片手册学习总结_第1张图片
  • Soc是一种片上系统,简单点说就是:有些功能芯片不需要控制外设设备,芯片内部就可以实现。Soc就是部分外设或芯片内部的主设备(M0核,外置的SWD控制器(如jlink等类似功能的设备,DMA这三个主设备)对芯片内部的从设备资源(存储器(flash,e2,sram)级各种外设(uart ,定时器,看门狗等))实现控制的一种机制,详见下图。

芯片手册学习总结_第2张图片
芯片手册学习总结_第3张图片

总结:芯片内部的存储地址映射:先给存储单元分配固定范围内的地址;然后给每个外设寄存器固定分配16k的地址(有些外设哪怕只用到4个字节,也要分配那么大的地址);最后给gpio口固定分配16k的地址。

  • 芯片系统支持bitband功能,对bitband区的访问就等效于对外设寄存器特定位的访问。(bitband的功能:假设:正在对外设寄存器进行读,写操作时,突然来大量的中断,这样会导致读,写寄存器出错。bitband的作用就是:处理外设寄存器时,首先通过bitband的映射功能,将该寄存器里面的数据复制到映射的地址里面,在映射的地址处理完了,才复制到真实的外设寄存器里面。这样就可以防止上面假设情况出现的错误。)
  • bitband就是在映射的地址区域中,处理真实寄存器中的某一位(一个地址去操作一位),访问速度快,而且不会对其他位有影响)。

cache功能:当cache功能不使能时,RAM是16k。当cache功能使能时,ram是14k。cache存储器是高速缓冲存储器。通常是由sram(staticrandom access memory静态存储器)组成。

  • Cache的功能是提高cpu数据的输入输出速率,cache容量小但是处理速度快。cache可以保存程序刚用过或循环使用的一部分数据。当程序需要再次使用该部分的数据时,可以直接从cache里面调用。根据程序的局现性原理,cache可以改善系统的性能(处理速度快)。

GPIO包含PA,PB,PC三组的GPIO口。每组都包含类似的PA口(数据寄存器); PUA(PA上拉选择寄存器,选择对应的io口是否要上拉电阻);PMA(PA口配置为输入或输出模式);PIMA(PA口的输入模式配置)。

  • GPIO相关的寄存器建议也要支持bitband功能。这样访问GPIO相关的寄存器时,可以进行bit操作。

  • 对于寄存器可以采用SET/CLR往指定寄存器地址里面写1,这样可以将PA,PB,PC数据寄存器里面的数据全部置1或清0。

  • 如果IO口复用配置为选择IO口之外的功能,模式寄存器(PMA,是输入还是输出用的) ,输入使能寄存器(PIEA)是-0时,表示输入使能是无效的。只有上拉选择寄存器(PUA)和输入模式选择(PIMA)在所有的复用配置下才是有效的。

  • 单片机所有的管脚开始都要选择为IO口,如果要作为特殊功能口需要配置对应的复用寄出器(PCA0,PCA1,PCB,PCC)。

    • [] PUA(上拉电阻选择寄存器),配置为0时,表示不选择上拉电阻,配置为1时,表示选择上拉电阻。IO口只有为输入模式时,才需要配置为1。当IO口处于输出模式或模拟PAD模式时,则不管PU怎么配置,PIN上拉均不使能。
    • [] PIMA(输入模式配置):定义端口号的输入缓冲器类型(为0时表示CMOS缓冲器),为1时表示TTL缓冲器。或者定义端口的输出类型的电路(为0时表示普通模式,为1时表示N-ch漏极开路模式)。
  • 普通的GPIO的PA,PMA,PIMA,PUA只需要上电时统一配置一下就可以了。当IO口处于输出模式或模拟PAD模式时,PUA怎么配置都不会生效。故统一对gpio进行数据模型的定义 :

struct gpio_t
{
     int





}

UART寄存器:芯片内部有6个UART接口,用于与外部进行异步串行通信。

  • UART接口控制有如下特征:6个全双工的UART接口;内置波特率发生器,支持不同的波特率配置;数据位宽支持5/6/7/8bit;停止位可配置成1或2bit;可选38Khz的红外调制;支持自动波特率检测;支持红外唤醒。
  • 在运行过程中,不能修改控制寄存器和波特率的寄存器里面的数据值。
UART相关的寄存器名 具体作用
uart_ctrl(Uart控制寄存器)
uart_baud 波特率配置寄存器
uart_stat uart状态指示寄存器
uart_txd uart发送数据寄存器
uart_rxdt uart接收数据寄存器

单片机代码的初始化过程
cpu内部寄存器的初始化 —>io口相关的初始化—>芯片外设设备的初始化、

  • cpu内部寄存器的初始化:给sys_ctl相关的寄存器里面的值修改成需要的参数;
  • cpu所有管脚io口的初始化:先将所有管脚选择位io口,当需要作为特殊功能配置的时候,配置为对应的复用寄存器PCA0,PCA1,PCB,PCC。

你可能感兴趣的:(嵌入式ARM和C)