主题中讨论的其他器件:MSP-EXP432E401Y、 MSP432E411Y、 MSP432E411Y-BGAEVM、 SysConfig
当对引脚 G2/PE3施加低电压时、我会看到奇怪的内部温度传感器值。 我最初在我们的 MSP432E411Y 定制板上观察到异常高的温度值、该定制板使用引脚 G2的 AIN0功能、并且通常对其施加低电压。 我已大力调试这一点、以便使用 MSP-EXP432E401Y 开发 套件红色 PCB (我还使用 MSP432E411Y-BGAEVM 开发套件红色 PCB 生成了这种行为)通过以下配置重现:
-从 adcbuftemperature_MSP_EXP432E401Y_tirtos_ccs 示例项目开始
-使用 SysConfig 添加 名为 CONFIG_GPIO_PE3的 GPIO 配置、使用硬件:无、模式:输出、输出类型:标准、 输出强度:中等、 初始输出状态:低电平、 拉电流:无、 GPIO 引脚:PE3/26 (接头)
-在代码中添加"GPIO_TOGGLE (CONFIG_GPIO_PE3);"行、如下所示
void adcBufCallback(ADCBuf_Handle handle, ADCBuf_Conversion *conversion,
void *completedADCBuffer, uint32_t completedChannel, int_fast16_t status) {
uint_fast16_t i;
uint16_t *rawTemperatureBuf = (uint16_t *) completedADCBuffer;
avgTemperature = 0;
/* Calculate average temperature */
for (i = 0; i < ADCSAMPLESIZE; i++) {
avgTemperature += rawTemperatureBuf[i];
}
avgTemperature = avgTemperature/ADCSAMPLESIZE;
/* Convert ADC value to Celsius */
avgTemperature = (1475*4096 - (75 * 33 * avgTemperature))/ 40960;
GPIO_toggle(CONFIG_GPIO_PE3); // Add this line
/* post adcbuf semaphore */
sem_post(&adcbufSem);
}
-按 DEV 套件按钮0并观察 UART 上的结果:
启动 ADCBuf 温度示例
平均温度为37.9981C
平均温度为16.3721C
平均温度为37.8894C
平均温度为16.4114C
平均温度为38.0283C
平均温度为16.0790C
平均温度为37.6718C
平均温度为16.1032C
类似地、在 SysConfig 中不配置引脚 PE3 (即该引脚将处于默认三态)、并将一根导线从 PE3接头连接到 GND 接头引脚:
启动 ADCBuf 温度示例
平均温度为28.6927C
平均温度为28.6474C
平均温度为28.7380C
平均温度为28.5416C
平均温度为28.3271C
平均温度为28.2184C
平均温度为28.2184C
平均温度为38.1643C
平均温度为38.0616C
平均温度为38.0857C
平均温度为38.2761C
平均温度为38.3002C
我已经严格梳理了 ADCBuf 的 SDK 驱动程序代码、但我找不到任何会导致这种情况的东西。 此外、我已在另一个测试中将引脚 G1\PE2、A5\PE4、K1\PK2、A8\PP7和 A7\PE6 (这些引脚也在我们的定制板上配置为 AIN 引脚)配置为 GPIO 输出、这些不会影响温度传感器读数。 此外、我发现 如果引脚上有逻辑高电压、它会报告准确的温度值。
我注意到 SLAZ709的勘误 ADC #13影响引脚 G2\PE3、但没有提到与内部温度传感器的关系。 这可能是未知的芯片勘误表、还是存在软件问题?
感谢您的帮助、
Steve

