TI工程师您好,有个28377D AD采样的问题描述如下,请指教:
双核工程,设计的两个CPU均通过DMA获取AD采样结果,测试结果是仿真模式下CPU1可以正常AD采样,CPU2 DMA中的数据不会变化。
Green Deng:你好,CPU2在仿真模式下也读取不到DMA的值吗?
可以参考以下帖子:e2echina.ti.com/…/302650
TI工程师您好,有个28377D AD采样的问题描述如下,请指教:
双核工程,设计的两个CPU均通过DMA获取AD采样结果,测试结果是仿真模式下CPU1可以正常AD采样,CPU2 DMA中的数据不会变化。
user5924858:
回复 Green Deng:
谢谢您的回复,是的,就是仿真模式下读取不到DMA的值,是不是底层配置不正确啊,还有个前提,我的双核工程在单机模式下应该是都可以读取AD的值的,请指点,谢谢!
TI工程师您好,有个28377D AD采样的问题描述如下,请指教:
双核工程,设计的两个CPU均通过DMA获取AD采样结果,测试结果是仿真模式下CPU1可以正常AD采样,CPU2 DMA中的数据不会变化。
Green Deng:
回复 user5924858:
这个可能性比较多,比如:触发DMA的ADC标志是否更新?DMA确实被触发了吗?DMA序列是否结束并生成ISR?DMA ISR是否在寻找正确的内存?
TI工程师您好,有个28377D AD采样的问题描述如下,请指教:
双核工程,设计的两个CPU均通过DMA获取AD采样结果,测试结果是仿真模式下CPU1可以正常AD采样,CPU2 DMA中的数据不会变化。
user5924858:
回复 Green Deng:
谢谢您的回复,能不能再具体点,比如:
1)触发DMA的ADC标志是否更新如何观察?
2)DMA是否被触发怎么观察?
3)DMA序列是否结束并生成ISR怎么确定?
4)DMA ISR是否在寻找正确的内存如何确定?
TI工程师您好,有个28377D AD采样的问题描述如下,请指教:
双核工程,设计的两个CPU均通过DMA获取AD采样结果,测试结果是仿真模式下CPU1可以正常AD采样,CPU2 DMA中的数据不会变化。
Green Deng:
回复 user5924858:
这里有个例程是实现的从EPWM到两个CPU的DMA集合你可以参考一下:C:\ti\controlSUITE\device_support\F2837xD\v210\F2837xD_examples_Dual\dma_transfer_shared_peripheral
一种调试方法是在代码的不同点或代码运行时直接检查“expressions window”窗口中的HW寄存器。
比如,可以观察adcaregs.adcintflg.bit.adcint1寄存器,来查看ADC转换是否在ADCA上完成并将adcint标志置位。然后,你可以检查各个DMA寄存器以确认操作是否在那里动作了(可能是control.perintflg、control.transfersts或prioritystat.activests等等)。
还可以在运行dma配置代码后设置断点,然后(代码停止后)通过在表达式窗口中写入control.perintfrc手动触发dma传输。
也可以在ISR中为给定模块设置一个断点,以查看代码是否进入ISR,或者可以在ISR中增加一个全局变量并在表达式窗口中观察它。