主题中讨论的其他器件:MSP430WARE
工具/软件:Code Composer Studio
大家好、我将在重复单通道模式下使用 ADC10来转换两个通道。 我使用 ADCIFG 作为 DMA0的触发器、DMA0被配置为从 ADC10MEM0获取8个 ADC 读数、并使用 DMA0SZ=8转移到缓冲器。 我开始一个通道(例如 A0)的转换五次、然后读取另一个通道(例如 A1)。 我发现的问题是、缓冲区包含两个来自之前转换的读数、例如:
T=1、A0_buffer=[490、491、490、491、 489、490、490、491]
T=2、A0_buffer=[490、491、480、481、 482、480、480、481]
T=3、A0_buffer=[480、481、490、491、 489、490、490、491]
T=4、A0_buffer=[490、491、480、481、 481、480、480、481]
T=5、A0_buffer=[480、481、490、491、 489、490、490、491]
T=5、A1_buffer=[490、491、690、691、 689、690、690、691]
T=6、A0_buffer=[690、691、490、491、 489、490、490、491]
此示例假设在 T1、T3、T5和 T6、通道 A0的读数约为490、对于 T2和 T4、通道 A0的读数为~480。 通道 A1应为~690。
以下是我为执行此操作而执行的步骤:
配置 DMA (目标地址)、
2.配置 ADC (通道)、
3.启用 DMA
4.启动 ADC 转换。
5.当 DMA 中断被激活时,禁用 ADC
在执行一些调试后、我发现在第3步中首次运行程序(T1)时、DMA0SZ=8、然后在第4步中、DMA0SZ 保持不变。 在第二个周期(T2) 中、DMA0SZ=8在步骤3中、但是在用 DMAEN 位启用 DMA 并转到下一行后、DMA0SZ 变为6。 这解释了最终缓冲器中两个读数错误的原因。
是否有关于此问题的提示?