1.程序框架
(1)STM32最小系统:时钟树配置,SWD配置
(2)I2C,串口配置,用于采集MPU6050数据以及把数据发出来。这里I2C采用硬件的方式,用软件的方法移植程序挺麻烦的。
我这里多用了几个串口,都是使用DMA进行收发,避免占用时间。
(3)定时器。用于生成PWM输出力矩以及进行编码器采集,获取轮胎转动角度。
输出PWM的定时器周期设置是100us。
定时器3和定时器4设置一样,分别对应左右轮的编码器,原理是对于A,B相信号的上升沿计数。
(4)配置外部中断引脚,要对应MPU6050的中断输出引脚
(5)电压检测
使用DMA进行母线电压的检测(通过电阻分压后接到片内AD,采用DMA进行循环读取),母线电压可以不使用,只是用来判断电池有没有电。
除此之外,还有屏幕、蓝牙、超声波模块是有接口的,但是都没有使用,因为我主要是打算学习控制理论方面,这些都不是必要的,用蓝牙调参,我尝试了下,蓝牙速率太慢了,最后还是用串口转USB,数据很快。
到此,硬件基础配置已经完成。