SDK版本:simplelink_msp432p4_sdk_3_40_01_02
CCS10.1.0
我在使用FreeRTOS的ADC驱动例程(adcbufmultichannel)遇到问题,我把P5.4接到3.3v,P5.5接到GND,通过串口显示采集结果,我看不出哪个是通道一的结果,哪个是通道2的结果。
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.
SDK版本:simplelink_msp432p4_sdk_3_40_01_02
CCS10.1.0
我在使用FreeRTOS的ADC驱动例程(adcbufmultichannel)遇到问题,我把P5.4接到3.3v,P5.5接到GND,通过串口显示采集结果,我看不出哪个是通道一的结果,哪个是通道2的结果。
参考该例程的说明
The sample buffer will contain alternating values between Board_ADCBUF0CHANNEL0 and Board_ADCBUF0CHANNEL1.
也就是说,buffer内是交替的值[CH0,CH1,CH0,CH1…]
您可以通过下面的代码来识别
void adcBufCallback(ADCBuf_Handle handle, ADCBuf_Conversion *conversion, void *completedADCBuffer, uint32_t completedChannel) { uint_fast16_t i; uint16_t *completedBuffer = (uint16_t *) completedADCBuffer; for (i = 0; i < ADCBUFFERSIZE; i++) { outputBuffer[i] = completedBuffer[i]; } if(completedChannel == CONFIG_ADCBUF0CHANNEL_0) { sem_post(&adcbufSem); } /* post adcbuf semaphore */ // sem_post(&adcbufSem); }
参考自: dev.ti.com/.../node
haolong liu 说:如果释放信号量不加if限制,理论上每个通道完成后都会释放信号量
是的,您的理解是正确的,理论上是应该两个channel交替的
haolong liu 说:但实际上task似乎只能接收到channel1完成的信号量,接收不到channel0完成时释放的信号量
您是如何测试的呢?
haolong liu 说:每当程序执行到断点,我看到channel并不是0,而是1。
我来测试一下后回复,谢谢
Susan Yang 说:haolong liu但实际上task似乎只能接收到channel1完成的信号量,接收不到channel0完成时释放的信号量您是如何测试的呢?
Susan Yang,您好
我想了一下,task是可以正确的接收信号量的。中断发送信号量,任务接收信号量的机制是没有问题的,只是多通道采集时,在任务执行打印之前,channel1的结果覆盖了channel0的结果,所以channel0结果一直没办法被任务打印