主题中讨论的其他器件: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