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.

[参考译文] 编译器/MSP430F5419A:无法从具有9600BAUD 速率和1MHz 频率的 SIM7600E GSM 模块的 MSP430F5419A 控制器获取 AT 命令的响应

Guru**** 2513185 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/865910/compiler-msp430f5419a-not-able-to-get-response-of-at-commands-from-msp430f5419a-controller-with-sim7600e-gsm-module-with-9600baud-rate-and-1mhz-frequency

器件型号:MSP430F5419A

工具/软件:TI C/C++编译器

您好!

 我正在使用 MSP430F419A 控制器和 SIM7600E GSM 模块、因此我面临的问题是无法在响应缓冲器中获得 AT 命令的响应我在正确发送 新的 AT 命令之前将其清除。

在代码 i、m 下面、用于进入响应缓冲区:-

memset (响应、'\0'、sizeof (响应)-1);
//memset (响应、'\0'、40);
CHECK_STATUS=0;
SEND_at_CMD (netclose);
SIM340_RESPONSE (RESPONSE);//9.
CHECK_STATUS =比较("+NETCLOSE:0"、响应、5);

 用于 SIM340_RESPONSE 的函数

void SI340_RESPONSE (char * resp)

char resP_buffer[30];
int count = 0、loop = 0;
unsigned long waitcount=0;
unsigned long waitlimit=50000;
memset (RESP_buffer、'\0'、30);

while (x!='\r\n'){
waitcount++;
if (waitcount > waitlimit)
中断;

X ='\0';
waitcount=0;
while (x!='\n'){
waitcount++;
if (waitcount > waitlimit)
中断;

X ='\0';
waitcount=0;
while (x ='\0'){
waitcount++;
if (waitcount > waitlimit)
中断;

waitcount=0;
操作

RESP_buffer[count]= x;
X ='\0';
while (x ='\0'){
waitcount++;
if (waitcount > waitlimit)
中断;

count++;
waitcount++;
}while (x!='\r'&& waitcount < waitlimit);
X ='\0';

while (x!='\n'){
waitcount++;
if (waitcount > waitlimit)
中断;

X ='\0';

for (loop=0;<count;loop++)
*(RESP+LOOP)= RESP_BUFFER[LOOP];

*(RESP+LOOP)='\0';
返回;  

用于 SEND _AT 命令

void send_at_cmd (char *at_ptr)

TX_PTR = at_ptr;
TX_STRING (TX_PTR);
//rx_array_ptr = rec_array;
返回;

因此、请检查您的回答对我很有价值。

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

    您好!

    您能否更清楚地解释一下您在 MSP430器件方面面临的问题? 不仅仅是 SIM7600E GSM 模块本身或两个部件之间的通信可能导致的整个系统问题。

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

    您好、Wei、

      答:当然,我会向大家解释我的 GSM 波特率是 9600,我已经设置了控制器波特率也是9600。我会向大家展示代码,我认为没有在响应缓冲区中正确得到响应的原因是存在问题 波特率缺失匹配

    下面是控制器的 UART 发送波特率的代码、请检查是否正确

    P3SEL |= BIT4+BIT5;                                 //分别选择 p3.4和 p3.5作为 TXD 和 RXD
    P3DIR |= 0x1A;                                      //将 TX、RTS 设置为输出。 P3.4 = 1且 P3.3 = 1
    UCA0CTL1 |= UCSWRST;                             //**将状态机置于重置中**
    UCA0CTL1 |= UCSSEL_2;                            // SMCLK
    UCA0BR0=6;                                      // 1MHz 9600 (请参阅用户指南)
    UCA0BR1=0;                                      // 1MHz 9600
    UCA0MCTL = UCBRS_0 + UCBRF_13 + UCOS16;        // Modln UCBRSx=0、UCBRFx=0、
    UCA0CTL1 &=~UCSWRST;                          //**初始化 USCI 状态机**
    __no_operation();
    UCA0IE |= UCTXIE;
    UCA0IE |= UCRXIE;                               //启用 USCI_A3 RX 中断

     

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

    您好!

    任何建议都会在...please 上给出任何建议、等待您的回复。

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

    您好!

    很抱歉耽误你的答复。

    您的 UART 配置看起来不错。

    首先、您应该确认 GSM 模块正确地发送数据。 尝试对 UART 的信号进行检测、以确认信号总线上的数据正常。

    然后、如果数据由 GSM 模块正确发送、并且您应该检查 MSP430 UART 的 RX 缓冲器是否获得数据并触发中断。