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.

[参考译文] TMS570LC4357:关于 SCI 波特率和时钟

Guru**** 2587345 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1572971/tms570lc4357-regarding-sci-baudrate-and-clock

器件型号:TMS570LC4357


工具/软件:

1) 如何在 SCI1 中实现 2000000 波特率  

2) 微控制器通过 UART (SCI1) 与 Sierra gsm rc7620 调制解调器连接。 我与 Sierra 团队交叉验证 gsm 调制解调器的响应时间对于一些 AT 命令,他们确保响应时间在 1 毫秒内或微秒的实习生,但在我的应用程序中它需要在毫秒内约 500 毫秒。 如何在微秒内实现它  

下面是用于发送、接收响应以及将其与响应进行比较的 c 函数  

uint16 command_at (void)

int rec=0;
M = 0;
Uint8 AT_Response[500]={0};                        //阵列、用于接收来自 GSM 调制解调器的响应
字符 STS[100];
INT 长度=0;
字符*s;
uint8 p=0;
strcpy (STS、“at\r\n")“);                              //copy at\r\n into STS buffer
sciSend (sciREG1、strlen (STS)、(uint8 *) STS);         //将 at 命令发送到 gsm 调制解调器
wait(20);                                          //向 GSM 调制解调器发送命令后出现小延迟
TIMEOUT_Timer1=0;
TIMER_10ms=0;
while (Timer_10ms<5)                                //等待 5 毫秒以接收来自 gsm 调制解调器的响应

Life_Sign_Counter ++;
REC=sciReceivereChar (sciREG1);                       //通过轮询方法接收字符
if (rec>=0)

AT_RESPONSE[m]=(char) rec;
if (AT_Response[m]=0x00)                          //从 GSM 响应中删除空字符并替换为 a

AT_Response[m]='a';
}
m++;
S=strstr ((const char *) AT_response、“OK")“);          //将 OK 与 GSM 响应进行比较的函数
If (s!=NULL)

 

memset (AT_response、0500);                         // 在响应中找到 OK 后将响应缓冲区设置为零

 

返回确定;
}
}
}

 

length=sizeof (AT_response);
if (length=0)
返回超时;                                   //如果在 5ms 内未收到响应、则返回函数
其他{

 

#ifdef AT_CMD_DEBUG
对于 (p=0;p<m;p++)
sciSendByte (sciREG3、AT_Response[p]);             //发送调试专用库灯的响应
#endif

 

返回错误;
}

 

}