我正在尝试从Nordic NRF52执行AT命令。我正在将Nordic UART module与内置函数app_uart_put(uint8_t byte)
配合使用,以将AT命令放置在UART上。接收AT命令的节点是EE-NBIoT module,它在后缀\r\n
上触发。当我运行以下代码时,我确定。
while (app_uart_put('A') != NRF_SUCCESS);
while (app_uart_put('T') != NRF_SUCCESS);
while (app_uart_put('+') != NRF_SUCCESS);
while (app_uart_put('C') != NRF_SUCCESS);
while (app_uart_put('F') != NRF_SUCCESS);
while (app_uart_put('U') != NRF_SUCCESS);
while (app_uart_put('N') != NRF_SUCCESS);
while (app_uart_put('=') != NRF_SUCCESS);
while (app_uart_put('1') != NRF_SUCCESS);
while (app_uart_put('\r') != NRF_SUCCESS);
while (app_uart_put('\n') != NRF_SUCCESS);
但是我想编写更可重用的代码,所以我编写了以下writeCommand函数。
void writeCommand(char cmd[])
{
while (app_uart_put('A') != NRF_SUCCESS);
while (app_uart_put('T') != NRF_SUCCESS);
while (app_uart_put('+') != NRF_SUCCESS);
uint8_t i;
for(i = 0; cmd[i] != '\0'; i++){
while (app_uart_put(cmd[i]) != NRF_SUCCESS);
}
while (app_uart_put('\r') != NRF_SUCCESS);
while (app_uart_put('\n') != NRF_SUCCESS);
nrf_delay_ms(100);
}
按如下所示运行此功能时,出现错误。
char cmd[] = "CFUN=1";
nrf_delay_ms(1000);
writeCommand(cmd);
为什么这行不通?当我查看传出命令时,它们是相等的。
答案 0 :(得分:0)
首先获取一张A3大纸,找到一支红笔,然后书写1000次
我将永远不会使用
nrf_delay_ms
来替代调制解调器的读取和解析响应。我将永远不会使用
nrf_delay_ms
来替代调制解调器的读取和解析响应。我将永远不会使用
nrf_delay_ms
来替代调制解调器的读取和解析响应。我将永远不会使用
nrf_delay_ms
来替代调制解调器的读取和解析响应。我将永远不会使用
nrf_delay_ms
来代替调制解调器的读取和解析响应。...
我对AT command documentation for U-Blox Sara N210进行了简要介绍,尽管简介部分有些简短,但看起来还是不错的。我建议先阅读V.250规范,因为这要更加详尽。因此,在写完1000个句子后,请阅读this answer,首先按照有关V.250的说明进行操作,然后按照给定的代码结构实现如何正确处理AT命令命令/响应文本的操作。
当然,第一部分本来是很有趣的,但是我对其余部分一无所知。您必须填补一些巨大的AT指令知识“漏洞”。除非您这样做,否则您将无法获得可靠的通信。这应该不是很困难,但是需要一些努力。