Other Parts Discussed in Thread: MSP430F5438A
HELO 先生、
如何使用 CONSEQ=2和 MSC 的计时器触发 msp430f5438a ADC。
采样频率=~1kHz
使用的时钟为 SMCLK = 12MHz、在这里、我通过引用寄存器级示例、通过使用 UCS 模块更改了时钟频率设置。
此外、我还需要通过串行(UART)将 ADC 数据传输到 PC。
您能不能告诉我我我每秒能获得1k 个样本
谢谢
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.
Other Parts Discussed in Thread: MSP430F5438A
HELO 先生、
如何使用 CONSEQ=2和 MSC 的计时器触发 msp430f5438a ADC。
采样频率=~1kHz
使用的时钟为 SMCLK = 12MHz、在这里、我通过引用寄存器级示例、通过使用 UCS 模块更改了时钟频率设置。
此外、我还需要通过串行(UART)将 ADC 数据传输到 PC。
您能不能告诉我我我每秒能获得1k 个样本
谢谢
在过去的一段时间里、我为 F5529发布了一个相关示例:
https://e2e.ti.com/support/microcontrollers/msp430/f/166/p/647533/2381069
我没有 F5438A、但查看数据表(SLAS655F)表6-8和6-10您的最佳选择可能是使用 SHS=3和 TB0.1 (该示例使用 F5529上的 SH=1和 TA0.1)。
它假设 SMCLK=1MHz、这会影响 ADC_TIMER_PERIOD 的值。
如果使用 CONSEQ=2、则应使用 MSC=0。 在这种情况下、您可以移除 ISR 中 ENC 的切换。
您好、先生、
很抱歉耽误你的回答。
1)在 MSP430F5438A 寄存器级示例中
a) msp430x54xA_adc_12_02.c 示例对于稳定@~1MHz 的基准、有75us 的延迟、我正在使用12MHz 时钟(使用使用示波器测试的 UCS 模块)如果我使用 REF 模块、那么稳定基准的延迟可能是12*75us 吗?
b)在 msp430x54xA_adc_12_06.c 中#define Num_for_Results 8.
为什么 num_for_samples 为8? 它是8个样本/秒、如果我需要1000个样本/秒、我是否需要将其更改为1000?
2) 2)我想使用计时器(ADC12SHS_3)来触发 ADC、正如您说过的、使用 TB0.1、那么我如何计算计时器值(TB0CCR1)来获得1k 个样本?
请澄清这些细节
此致
Shiva
您好、Shiva、
对于第一个问题、在 msp430x54xA_adc_12_02.c 的代码示例中、延迟函数主要用于稳定基准电压、因此不需要非常精确。 当您使用12MHz 时钟时,可以将其设置为75*12。 延迟时间也约为75us。
在 msp430x54xA_adc_12_06.c 的代码示例中 、Num_for_results 的参数仅设置缓冲区的大小、不决定采样率。
对于第二个问题、您可以使用 TB0.1来设置 计时采样、如果您想获得1K 采样、则需要满足 CCR 值、从零到1ms 内设置的值、这些值取决于 TB0.1时钟源、 您可以参考我们有关 TB0.1的代码示例、同时、ADC12SHSx 寄存器和 TB0.1具有相应的关系、如下图:所示
我想您可以尝试以下方法、以便 在1秒内实现1000次的 AD 采样:
设置1ms 计时器中断并在计时器中断中启动 AD 采样。 当然、这种方法可能会遇到其他问题。 这仅供您参考。
此致
Johnson
2) 2)在链接的示例中(源自 ADC_06):
>#define ADC_TIMER_PERIOD 20000 // 1MHz/20000 = 50Hz。 根据口味进行调整。
反转算术、您可以尝试:
>#define ADC_TIMER_PERIOD (12000000UL/1000UL) // SMCLK=12MHz/RATE =1kHz -> 12000 (适合 uint16_t)