我加入工作室参加的第一个比赛是第五届中国高校智能机器人创意大赛,我参加的赛项是开放部件组轮式自主格斗机器人。经历了没日没夜的调试,无数次欣赏凌晨四点半的夜晚,感受着每天就睡两三个小时伴随着疲惫的开心。在我和队友的共同努力之下,我们的成绩也很优异,获得了预期的奖项。虽然原本我还有一个电控队友,但是因为疫情他没能和我一起参与备赛,这是令人可惜的一点。但人生总要向前看,备赛最重要的当然是过程,结果只是水到渠成的必然,宝贵的经历是什么都无法替代的,它使我成长,助我进步。相信我们在以后也会继续向前的。
在先学习DMA之前,我要先了解ADC的原理,然后在ADC程序实现的基础上使用DMA模式,可以加快数据采集和处理,当使用ADC+DMA来做为STM32F4的距离检测基础程序框架,可以实现比赛中距离的实时检测,进而完成比赛。
ADC(模/数转换器)
ACD是指将连续变量的模拟信号转换为离散的数字信号的数字信号(可以表示一定比例电压值);DAC(数/模拟转换器)与之相反。
STM32F407有3个ADC控制器,共24个通道,通道有8个+外部通道16个=24个外部通道
3个ADC控制器中,ADC1和ADC2的IO引脚是一样的。ADC3的IO引脚有一些差异,方便用户使用更多的ADC引脚。
ADC1和ADC2的通道是0~15,PA0~PA7,PB8,PB9,PC0~PC5。
ADC3的通道中4~8对应PF6~10,9对应PF3,14~15对应PF4~5。
DMA模式
直接内存访问(DMA)是用来以提供外设和内存,内存和内存之间的高速数据传输的。数据可以在没有任何CPU干预下通过的DMA进行传输。这使得CPU资源更倾重与其他操作。
DMA控制器基于一个复杂的总线矩阵架构,结合了功能强大的双AHB主总线架构与独立的FIFO,以优化系统宽带。
两个DMA控制器共有16个数据流(stream),每个数据流可以编程与规定的通道中的一个搭配。
DMA的工作模式
单次传输
多次输出(burst):把数据分成多次传输