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.

[参考译文] CCS/TMS570LC4357:ADC 结果转换为摄氏度

Guru**** 1640390 points
Other Parts Discussed in Thread: LM35, HALCOGEN, TMS570LC4357, RM57L843, LMT86
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/831167/ccs-tms570lc4357-adc-result-convert-to-celsius-degree

器件型号:TMS570LC4357
主题中讨论的其他器件:LM35HALCOGENRM57L843LMT86

工具/软件:Code Composer Studio

如何将从 ADC 接收到的结果转换为摄氏度。 

ADC 输入配置为12位、具有内部参考。

我使用 LM35 DZ 温度传感器。

int main (空)

//uint32 volte_const;
//uint32温度;

unsigned int volte_const;
无符号 int 温度;
unsigned int NumberOfChars2;
unsigned int NumberOfChars3;
unsigned int NumberOfChars1;
unsigned int NumberOfChars4;
unsigned int value1;


canInit();
sciInit();
adcInit();

adcData_t adc_data;//adc 数据结构
adcData_t * adc_data_ptr =&adc_data;//adc 数据指针

while (1)

adcStartConversion (adcREG1、adcGROUP1);//开始 ADC 转换
while (!adcIsConversionComplete (adcREG1、adcGROUP1));//等待 ADC 转换
adcGetData (adcREG1、1U、adc_data_ptr);//将转换存储到 ADC 指针
Value1 =(unsigned int) adc_data_ptr ->值;
NumberOfChars1 = ltoa (value1、(char *) adcread);
volte_const =(value1*3.3)/4096*1000;
温度= VOLTGE_CONST/10;


NumberOfChars2=ltoa (volte_const、(char *)电压);
NumberOfChars3=ltoa (temperature、(char *) temp);
NumberOfChars4=getNumberOfDigit ((int) value1);

/*CAN*/
canTransmit (canREG1、canMESSAGE_BOX1、(const uint8 *)& temp);
canTransmit (canREG2、canMESSAGE_BOX2、(const uint8 *)& voltage);
canTransmit (canREG3、canMESSAGE_box3、(const uint8 *)& adcread);


//sciSend (sciREG1、NumberOfChars1、(uint8 *) adcread);
sciSend (sciREG1、NumberOfChars1、(uint8 *) adcread);
sciSend (sciREG1、1、"");
sciSend (sciREG1、12、"温度:");
printf ("");
sciSend (sciREG1、NumberOfChars3、(uint8 *) temp);
sciSend (sciREG1、3、"°C");
sciSend (sciREG1、1、"");
sciSend (sciREG1、8、"电压:");
sciSend (sciREG1、NumberOfChars2、(uint8 *)&voltage);
printf ("");
sciSend (sciREG1、4、"[mV]");
sciSend (sciREG1、2、"\n"r);
printf ("");
sciSend (sciREG1、1、"");
sciSend (sciREG1、NumberOfChars4、(uint8 *)&value1);
sciSend (sciREG1、7、"value1:");



从 ADC 接收到的值例如252、不知道哪一项是 等效的摄氏度。

我尝试以下公式:" volte_const =(value1*3.3)/4096*1000; ", 答案不正确。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我应用了该公式。 当我加热传感器时、当我冷却传感器时、温度升高。 房间里有28度,传感器在端子30处读出的油污,这就是问题所在。 什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我是说我必须同时使用这两个公式吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    为什么我不通过 CAN 接收消息?  

    用于传输和接收的代码段。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    请为此问题打开一个新主题。 当前线程最初是为 ADC 模块/设置/API 打开的,它将无法清楚此处讨论的问题。