工具/软件:
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
返回错误;
}
}
