搭建机器人电控系统——MCU基石
在上一章中,我讲解了搭建一个机器人电控系统的前期准备工作,包括电源的选择和主控的开发,经过一些基础的单片机任务之后,现在你应该对单片机的一些编程习惯有了掌握。
在本章中,我将会按照一个机器人的底盘到上层机构的顺序,单独来对每一个机构的电控部分进行讲解。从中分别来详细展示运动模型、通信协议、PWM输出和算法部分,从而让你学会如何用MCU去控制每个部分机构的运动。
不过在这之前,我会以STM32F407为例,先补充一些关于MCU的基本知识原理:
STM32系统架构
STM32时钟配置
GPIO原理
中断NVIC与EXTI
STM32系统总线架构
在对应STM32F4的《参考手册》中,有如下一个系统架构图:
从整体来看,STM32系统借助总线矩阵,实现主控总线到被控总线的访问。
主控总线
①Cortex内核I、D、S总线
Cortex-M4:ARM制定的一种内核协议。在选择主控章节说过,ARM制定内核协议,由ST公司根据内核协议制作STM32芯片。即STM32F4系列单片机内核是Cortex-M4。
I总线(ICode)[instruction]:此总线用于将Cortex-M4内核的指令总线连接到总线矩阵,进而去访问存储代码的Flash/SRAM/FSMC;反过来,内核通过此总线获取指令。
D总线(DCode)[data]:此总线用于将Cortex-M4内核的数据总线RAM连接到总线矩阵,进而访问代码或数据存储器(Flash/FSMC);反过来,内核通过此总线进行数加载和调试。
S总线(S-BUS)[System]:此总线用于将Cortex-M4内核的系统总线连接到总线矩阵,进而访问外设或SRAM中的数据;反过来,内核可通过此总线获取指令,但效率比ICode低。
②DMA总线
此总线用于将DMA总线接口连接到总线矩阵,进而访问存储器SRAM、Flash和AHB、APB外设、数据存储器SRAM/FSMC。
DMA与S-BUS的区别在于DMA可以不占用CPU的资源运行,当你需要接受大量数据(比如串口接收大量数据)时,可以开启DMA,提高CPU的运行效率。
③以太网和USB总线
这两条总线都是DMA访问的,也不占用CPU的资源。
总线矩阵
总线矩阵用于主控总线之间的访问仲裁管理,当有多条主控总线需要访问时,采用循环调度的算法进行仲裁。
AHB(Advanced High performance Bus):高级高性能总线,连接总线矩阵和被控总线。其中,访问到外设的总线称为APB1/APB2(Advanced Peripheral Bus)外设总线。(中间可能经过分频)
被控总线
被控总线主要分三种:Flash总线、SRAM存储器总线、AHB外设总线(APB1/APB2)。
版权声明:本文为CSDN博主「猴头攻城狮」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ROS_homes/article/details/122752350
暂无评论