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.

[参考译文] TM4C1294NCPDT:TM4C1294NCPDT 单线接口

Guru**** 2611705 points
Other Parts Discussed in Thread: TM4C1294NCPDT

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1038912/tm4c1294ncpdt-tm4c1294ncpdt-1-wire-interface

器件型号:TM4C1294NCPDT

大家好、

我们将 GPIO 用作 具有 DS18S20的 TM4C1294NCPDT 的单线接口

但 DS18S20没有响应。

请在下面找到所使用的代码。

请提供任何意见。 我们在1线测试中被击中。

代码如下所示。

----------------------------------


void readTherm (void){
/*温度传感器*/

char opbuffer[100];
int32_t ret=0、i=0、dataToSend=0;

GPIOPinTypeGPIOOutput (GPIO_PORTM_BASE、GPIO_PIN_4);
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、GPIO_PIN_4);

/*重置*/

GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、0);
MicroSecDelay (800);
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、GPIO_PIN_4);
MicroSecDelay (150);

延迟(100);

/*Skip Rom 命令*/
for (i=0;i<8;i++){
//GPIOPinTypeGPIOOutput (GPIO_PORTD_base、GPIO_PIN_4);
dataToSend = 0;
dataToSend =((0xCC >>(I))& 0x01);
//sprintf (opbuffer、"ROM 命令%d 要发送的数据=%x \r\n"、i、dataToSend);
//uart_Send (opbuffer);
if (dataToSend = 1){
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、0);
MicroSecDelay (20);
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、GPIO_PIN_4);
MicroSecDelay (82);
}否则{
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、0);
MicroSecDelay (83);
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、GPIO_PIN_4);

MicroSecDelay (11);

MicroSecDelay (12);


for (i=0;i<8;i++){
//GPIOPinTypeGPIOOutput (GPIO_PORTD_base、GPIO_PIN_4);
dataToSend = 0;
dataToSend =((0xB4 >>(I))& 0x01);
//sprintf (opbuffer、"ROM 命令%d 要发送的数据=%x \r\n"、i、dataToSend);
//uart_Send (opbuffer);
if (dataToSend = 1){
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、0);
MicroSecDelay (20);
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、GPIO_PIN_4);
MicroSecDelay (82);
}否则{
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、0);
MicroSecDelay (83);
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、GPIO_PIN_4);

MicroSecDelay (11);

MicroSecDelay (12);

for (i=0;i<8;i++){
//GPIOPinTypeGPIOOutput (GPIO_PORTD_base、GPIO_PIN_4);
dataToSend = 0;
dataToSend =((0xFF >>(I))& 0x01);
//sprintf (opbuffer、"ROM 命令%d 要发送的数据=%x \r\n"、i、dataToSend);
//uart_Send (opbuffer);
if (dataToSend = 1){
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、0);
MicroSecDelay (20);
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、GPIO_PIN_4);
MicroSecDelay (82);
}否则{
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、0);
MicroSecDelay (83);
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、GPIO_PIN_4);

MicroSecDelay (11);

MicroSecDelay (12);

延迟(100);
/*重置*/

GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、0);
MicroSecDelay (800);
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、GPIO_PIN_4);
MicroSecDelay (150);

延迟(100);

/*Skip Rom 命令*/
for (i=0;i<8;i++){
//GPIOPinTypeGPIOOutput (GPIO_PORTD_base、GPIO_PIN_4);
dataToSend = 0;
dataToSend =((0xCC >>(I))& 0x01);
//sprintf (opbuffer、"ROM 命令%d 要发送的数据=%x \r\n"、i、dataToSend);
//uart_Send (opbuffer);
if (dataToSend = 1){
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、0);
MicroSecDelay (20);
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、GPIO_PIN_4);
MicroSecDelay (82);
}否则{
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、0);
MicroSecDelay (83);
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、GPIO_PIN_4);

MicroSecDelay (11);

MicroSecDelay (12);

/*Convert T 命令*/
for (i=0;i<8;i++){
//GPIOPinTypeGPIOOutput (GPIO_PORTD_base、GPIO_PIN_4);
dataToSend = 0;
dataToSend =((0x44 >>(I))& 0x01);
//sprintf (opbuffer、"ROM 命令%d 要发送的数据=%x \r\n"、i、dataToSend);
//uart_Send (opbuffer);
if (dataToSend = 1){
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、0);
MicroSecDelay (20);
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、GPIO_PIN_4);
MicroSecDelay (82);
}否则{
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、0);
MicroSecDelay (83);
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、GPIO_PIN_4);

MicroSecDelay (11);

延迟(7);

/*重置*/

GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、0);
MicroSecDelay (800);
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、GPIO_PIN_4);
MicroSecDelay (150);

延迟(5);

/*Convert T 命令*/
for (i=0;i<8;i++){
//GPIOPinTypeGPIOOutput (GPIO_PORTD_base、GPIO_PIN_4);
dataToSend = 0;
dataToSend =((0xCC >>(I))& 0x01);
//sprintf (opbuffer、"ROM 命令%d 要发送的数据=%x \r\n"、i、dataToSend);
//uart_Send (opbuffer);
if (dataToSend = 1){
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、0);
MicroSecDelay (20);
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、GPIO_PIN_4);
MicroSecDelay (82);
}否则{
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、0);
MicroSecDelay (83);
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、GPIO_PIN_4);

MicroSecDelay (11);

MicroSecDelay (12);

for (i=0;i<8;i++){
//GPIOPinTypeGPIOOutput (GPIO_PORTD_base、GPIO_PIN_4);
dataToSend = 0;
dataToSend =((0xBE >>(I))& 0x01);
//sprintf (opbuffer、"ROM 命令%d 要发送的数据=%x \r\n"、i、dataToSend);
//uart_Send (opbuffer);
if (dataToSend = 1){
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、0);
MicroSecDelay (20);
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、GPIO_PIN_4);
MicroSecDelay (82);
}否则{
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、0);
MicroSecDelay (83);
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、GPIO_PIN_4);

MicroSecDelay (11);

// GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_4、0);

//GPIOPinTypeGPIOInput (GPIO_PORTM_BASE、GPIO_PIN_4);
//ret = GPIOPinRead (GPIO_PORTM_BASE、GPIO_PIN_4);
// sprintf (opbuffer、"Respon =%x \r\n"、ret);
//(opbuffer);

--------------

此致、

Sumathi

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

    您好、Sumathi、

    虽然我想尝试为您提供一些指导、但我对 DS18S20器件一无所知、因此您必须帮助我了解代码的哪一部分发生了故障以及原因、以便我提出建议。 我无法查看代码以确保与所选器件对接的准确性、但我可以帮助解决您发现的 TM4C GPIO 外设特定问题。

    此致、

    Ralph Jacobi