大家好、
我们将 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