工具/软件:Code Composer Studio
您好!
我尝试使用 Launchpad 套件通过 driverlib 读取多个通道(适用于 MSP430FR2xx_4xx 器件的 MSP430 DriverLib)
我已经使用 ADC12成功读取了不同 Launchpad 上的多个通道。
使用 ADC 12、我能够根据使用代码的 configureMemory 和 getResult 函数将我的 ADC 值存储在指定的存储器缓冲区中
ADC12_B_configureMemParam memParam1 ={0}; memParam1.memoryBufferControlIndex = ADC12_B_MEMORY_0; //第一个内存插槽 memParam1.inputSourceSelect = ADC12_B_INPUT_A9; //输入引脚传感器1 memParam1.refVoltageSourceSelect = ADC12_B_VREFPS_AVCC_VREFNEG_VSS; //默认值 memParam1.endOfSequence = ADC12_B_NOTENDOSEQUENCE; //继续采样 memParam1.windowComparatorSelect = ADC12_B_Window_Comparator_disable;//默认 memParam1.differialModeSelect = ADC12_B_different_mode_disable;//默认 ADC12_B_configureMemory (ADC12_B_B_base、&memParam1); //加载设置
其中 ADC12_B_MEMORY_0保存了我的 ADC 值、可以通过读取
L1 = ADC12_B_getResults (ADC12_B_B_base、ADC12_B_MEMORY_0);
我可以非常轻松地将不同的输入应用于不同的存储器位置、以便读取多个通道。
现在、区别/问题在于:ADC10显然不支持此存储器功能、因为 ADC10的函数 getResults 和 configureMemory 不接受存储器位置(对于 getResults、只要求基址、而对于配置存储器、则没有 memoryBufferControlIndex 设置)。
现在、代码看起来像这样、我想通过 UART 连接发送数据:
ADC_startConversion (ADC_base、 //开始 ADC 转换 ADC_RELEASE_SEQOFCHANNELS); //多个连续读取,直至发出 disable 命令 while (1){ L1 = ADC_getResults (ADC_base);// Lsensor 1 L2 = ADC_getResults (ADC_base);// Lsensor 2. P1 = ADC_getResults (ADC_base);//传感器1 if (L1 >= 0x001){ 传感器的//阈值 transmiteUSCI_UART16 (L1|0x1000); //为传感器1添加代号1,发送值 }
之前在 ADC12上、我可以指定我要在 L1、L2和 P1变量中放入哪个值、它效果很好。
现在、在 ADC10上、我通过 UART 获得了一些结果、但我无法确定我实际发送的 ADC 结果、我无法保证它是否是预期的 ADC 结果。
我找到的唯一示例代码是基于中断或针对单个读取的。 我想在环路中手动读取 ADC 传感器值、并通过 UART 输出传感器值。
Driverlib 还在 getResult 函数下"
- 参数
-
baseAddress 是 ADC 模块的基地址。
- 返回
- 指定存储器缓冲区内容的有符号整数。
"
那么、我的问题是:我的 ADC 值存储在哪里? 这种"指定的存储器缓冲器"在哪里? 我阅读了一些有关 DTC 的内容来从 INCH 寄存器移动存储器、但 driverlib 显然不知道有关 DTC 或 INCH 寄存器的任何信息。