工具/软件:Code Composer Studio
大家好、
我想为 msp430f6736 (100引脚)使用6条模拟输入线路。 A0-A5的输入。
我已经介绍了使用3条输入线路的示例代码。 以下是示例代码:
#include unsigned char adc_result[3]; // 8位 ADC 转换结果数组 int main (void) { WDTCTL = WDTPW | WDTHOLD; //停止 WDT //设置 P1.2 A0、1.1 A1、1.0 A2 P1SEL |= BIT0 | BIT1 | BIT2; //将 P1.0、.1、.2设置为非 IO _disable_interrupt (); //禁用中断;端口映射配置 PMAPKEYID = PMAPKEY; //启用访问端口映射寄存器 P1MAP2 = PM_ANALOG; //启用 A0 P1MAP1 = PM_ANALOG; //启用 A1 P1MAP0 = PM_ANALOG; //启用 A2 PMAPKEYID = 0; //禁用访问端口映射寄存器 _enable_interrupt (); //重新启用所有中断 //设置 ADC10 ADC10CTL0 = ADC10SHT_2 | ADC10MSC | ADC10ON;// 16ADCclks、MSC、ADC 打开 ADC10CTL1 = ADC10SHP | ADC10CONSEQ_1; //脉冲采样模式,点序 ADC10CTL2 &=~ADC10RES; // 8位分辨率 ADC10MCTL0 = ADC10INCH_2; // A0、A1、A2 (EOS)、AVCC 基准 //设置 DMA0 (ADC10IFG 触发) DMACTL0 = DMA0TSEL_24; // ADC10IFG 触发 DMA0SZ = 0x03; // 3次转换 __data16_write_addr ((unsigned short)&DMA0SA、(unsigned long)&ADC10MEM0); //源单个地址 __data16_write_addr ((无符号短整型)&DMA0DA、(无符号长整型)&ADC_Result [0]); //目标数组地址 DMA0CTL = DMADT_4 | DMADSTINCR_3 | DMASRCBYTE | DMADSTBYTE | DMAEN | DMAIE; //重复单次传输 //递增目的 //字节访问 //启用转换序列后的 int while (1) { while (ADC10CTL1 & ADC10BUSY); //等待 ADC10内核处于活动状态 ADC10CTL0 |= ADC10ENC | ADC10SC; //采样和转换开始 _bis_SR_register (LPM0_bits | GIE); //输入 LMP0,带中断 _delay_cycles (5000); //序列转换之间的延迟 __no_operation(); //断点;查看 ADC_Result } } #if defined (__TI_Compiler_version__)|| defined (__IAR_systems_icc_) #pragma vector=DMA_vector __interrupt void DMA0_ISR (void) #elif defined (__GNU__) void __attribute__((interrupt (DMA_vector))) DMA0_ISR (void 编译器#else! #endif { 开关(__evo_in_range (DMAIV、16)) { 案例 DMAIV_NONE:break; //无中断 案例 DMAIV_DMA0IFG: // DMA0IFG = DMA 通道0 //转换序列完成 _BIC_SR_REGISTER_ON_EXIT (LPM0_BITS);//返回时退出 LPM0 中断; 案例 DMAIV_DMA1IFG:中断; // DMA1IFG = DMA 通道1 案例 DMAIV_DMA2IFG:中断; // DMA2IFG = DMA 通道2 案例8:中断; //保留 案例10:中断; //保留 案例12:中断; //保留 案例14:中断; //保留 案例16:中断; //保留 默认值:break; } }
我尝试通过设置断点来打印所有3个输入的输出。 我获得了相对于8位分辨率的输出。
我尝试并更改了:
ADC10CTL2 &=~ADC10RES; // 8位分辨率
更改为 ADC10CTL2 |= ADC10RES; // 10位分辨率
但它没有更改为10位分辨率。
我需要更改什么才能获得10位分辨率?
模拟输入 A3-A5位于端口9上。
如何将这些输入添加到此代码中、以便能够获得屏幕上所有6个模拟输入的输出?
可以帮我解决这个问题吗?
谢谢、
评估