多语言展示
当前在线:1800今日阅读:31今日分享:25

单片机SPC5605B如何使用

单片机SPC5605B如何使用呢?下面就跟小编一起来看一看吧。
工具/原料

PC

方法/步骤
1

DMA:直接内存存取(direct memory access),一种内存访问技术,可以实现外设与内存、内存与内存之间的数据传输,恰当的使用可有效提升CPU效率。     MPC560x/SPC560x是freescale和ST合作开发的一款基于powepc架构的32位单片机芯片,价格低廉,外设丰富,功能强大,属于车规级芯片(本人使用的是MPC5607B)。MPC5607B具有16路增强型DMA(eDMA),可灵活实现64路DMA源通道数据传输功能。

2

功能需求:以1ms为周期循环采样PB[0]端口的电压值(AD采样值)     软件设计:使用PIT3定时10ms触发AD采集功能,每采集一组数据通过eDMA依次放入到数组adc_val[]中,每采集到一定量(4组)数据触发一次eDMA中断,中断函数中处理最新接收到的数据(串口输出AD采样值),其中,ADC源数据32bits(如果不读取数据有效标志,可以只采16bit数据),数组adc_val 数据32bits。为实现每次PIT及时只响应一组数据的传输,启用默认模型(每采集一组数据触发一组主循环传输,每完成4组主循环传输触发一次DMA中断);     数据传输时序:         PIT3计算10ms-->ADC采集-->ADC采集完成触发DMA_MUX29检测-->触发eDMA0数据传递(完成一次主循环):ADC数据传递到adc_val数组     eDMA0每完成了4次主循环(half or major)-->触发eDMA中断-->数据处理(串口打印)

3

测试:串口测试打印数据,实现预期结果。(由上传图片无法正常显示,此次无贴图)

4

功能需求:以1ms为周期循环采样PB[0]端口的电压值(AD采样值)     软件设计:使用PIT3定时10ms触发AD采集功能,每采集一组数据通过eDMA依次放入到数组adc_val[]中,每采集到一定量(4组)数据触发一次eDMA中断,中断函数中处理最新接收到的数据(串口输出AD采样值),其中,ADC源数据32bits(如果不读取数据有效标志,可以只采16bit数据),数组adc_val 数据32bits。为实现每次PIT及时只响应一组数据的传输,启用主副循环模型(每采集一组数据触发一组副循环传输,每完成4组副循环传输触发一次DMA中断)     数据传输时序:     PIT3计算10ms-->ADC采集-->ADC采集完成触发DMA_MUX29检测-->触发eDMA0数据传递(完成一次副循环):ADC数据传递到adc_val数组     eDMA0每完成了4次副循环(half or major)-->触发eDMA中断-->数据处理(串口打印)     代码实现:(此部分代码只在EDMA_Init函数中与上一节不同,以下只列出不同部分)

5

测试: 测试串口打印数据,其中,开发板上电后第一次DMA中断时输出的第一个数据为非法值(需要丢弃),其他各组数据均正常输出;

注意事项

如果看不懂,请教专业人员。

推荐信息