This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSPM0G3507:将 ADC 数据写入数组-在32/64的边界处缺失

Guru**** 2393275 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1515314/mspm0g3507-writing-adc-data-to-array---missing-at-boundary-of-32-64

器件型号:MSPM0G3507

工具/软件:

你好。

我正在从两个 ADC 读取数据并连接到两个缓冲器。

ADC 设置正确并可正常工作。

ADC 读取值与预期完全一样…

*ptr8_buffer0++=(char)(DL_ADC12_getMemResult (ADC12_0_INST、DL_ADC12_MEM_IDX_0));
*ptr8_buffer1++=(char)(DL_ADC12_getMemResult (ADC12_1_INST、DL_ADC12_MEM_IDX_0));
两个缓冲区和指针定义为:
unsigned char buffer[130]=0};
unsigned char *ptr8_buffer0 =&buffer[0];;
unsigned char *ptr8_buffer1 =&buffer[65];
但 ptr8_buffer0[32]、 ptr8_buffer0[64]中的数据始终错误…… 仅在"32"边界上...
这是对齐问题吗???
谢谢
Phil
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是否在 ptr8_buffer1[]中看到相同的异常? 我假设您是在循环方式中使用两个子缓冲区;我(个人)会审核(再次)离线算术。 此处我没有看到任何会受到对齐影响的代码(因为字节始终对齐)。

    getMemResult ()调用位于哪里(ISR 还是 main)? 此外、您是否在"错误"值中看到模式(例如零、过时、重复)? 是否仍从 MOSI 触发 ADC?