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.

[参考译文] CCS/MSP430F2416:发送SMS时,Ctrl+Z字符无法识别

Guru**** 2523320 points
Other Parts Discussed in Thread: MSP430F2416

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/584046/ccs-msp430f2416-ctrl-z-character-not-recognizing-when-sending-sms

部件号:MSP430F2416

工具/软件:Code Composer Studio

大家好,

我正在尝试实施一个项目,使用带SIM800L GSM模块的MSP430F2416发送SMS。 该代码是在CCS 6.0 Tm1编译器中开发的。 我在这里附上了我制定的守则。 对我来说,问题始终是我的移动只接收空短信,无论AT命令是通过MSP430 UART发送的。 所以我尝试使用超级终端通过PC向SIM800L模块发送AT命令,在本测试中 ,SMS文本已成功接收到移动设备。 我看到的唯一区别是对CTRL+Z (CHAR (26))的识别。  

我还尝试过SIM900 GSM模块和MSP430 (通过UART发送AT命令),在这种情况下,成功接收了SMS文本。

由于msp30可以与SIM900模块配合使用,而SIM800L可以与超级终端通信正常工作,因此通过此测试结果,我可以确保MSP430和SIM800L模块都不会出现任何问题。 每当 我尝试  通过MSP430 UART与SIM800L通信时,只有移动设备收到空短信。  我找不到任何线索来解决这一问题。  

但是,SIM800L模块的尺寸比SIM900模块的尺寸要小。 所以我只能使用SIM 800L模块。 是否有人会面对这样的问题呢? 此问题是否会因编译器问题而引起?

UART驱动程序已在轮询方法中实现。

提前感谢。

#include<MSP430-h>
#include <stdint.h>
#include
<stdlib.h>
#include <UART.h>


unsigned char CtrlZ =(char) 26;
unsigned char at[4]={"at\r\n";
unsigned cmgf[13]={"AT+CMGF=1\r\1s\n"unsigned
char f"=0+1\chgs\n"=0+1"\}



WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器

UINT8_t索引= 0,I = 0;
uINT32_t k = 0;
Int ind = 0;

unsigned char tmpLatLong [10]={0};
无符号char txfrBuffer[1]='a';

//__bis_sr_register (GIE); //中断已启用

UART_Open (1);
UART_Open(0);


UART_TXN (&AT[0],4,1);
K = 20万;
执行{
--k;
} 同时(k > 0);
UART_TXN (&cmgf[0],sizeof(cmgf),1);
K = 20万;
执行{
--k;
} 同时(k > 0);

UART_TXN (&cmgs[0],sizeof (cmgs),1);
K = 20万;
执行{
--k;
} 同时(k > 0);

UART_TXN (&txfrBuffer[0],sizeof (txfrBuffer),1);
K =200万;
执行{
--k;
} 同时(k > 0);

UART_TXN (&CtrlZ,大小(CtrlZ),1);
K = 20万;
执行{
--k;
} 同时(k > 0);
while (1);
} 

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

    我不熟悉此模块,但我会尽力帮助。 您能否帮助确认以下事项,以确保我正确理解您的问题:
    使用完全相同的MSP430代码,所有功能都能与其它GSM模块一起正常工作? 如果您使用终端将相同的数据发送到发生故障的GSM模块,它是否也能正常工作?

    您是否尝试过使用示波器或逻辑分析仪观察MSP430和两个不同GSM模块之间的UART通信,以比较并查看是否有任何不同的情况发生,即使您使用的是相同的代码?

    此外,我发现您只是通过循环倒计时来使用一些软件延迟-可能编译器已对其进行了某种程度的优化,因为它不执行任何操作, 或者它没有采用正确的周期数-更可靠的方法是使用__DELAY周期(x);其中x是您要延迟的MSP430的CPU周期数。

    软件延迟的目的是什么? 它是否为数据包完成发送提供时间? 还是在数据包之间提供延迟? 如果没有看到UART_TXN函数,很难知道可能会出现什么问题。

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

    您好,Katie:

    感谢您的回复。  

    Katie Pier 说:
    使用完全相同的MSP430代码,所有功能都能与其它GSM模块一起正常工作?[/QUOT]

    是的,相同的MSP430代码适用于SIM900A GSM模块。

    Katie Pier 说:
    如果您使用终端将相同的数据发送到发生故障的GSM模块,它也能正常工作?[/QUOT]

    是的,您的理解是正确的。 如果我通过终端将AT命令发送到SIM800L模块,则它正在发送带文本的SMS。

    您是否曾尝试使用示波器或逻辑分析仪观察MSP430和两个不同GSM模块之间的UART通信,以比较并查看是否发生了任何不同的情况,即使您使用的代码相同? [/引述]

    由于我没有示波器,我尝试通过串行端口终端捕获发送和接收数据。 (HHD设备监控工作室7.74 ,串行监视器)。  在这种情况下,命令通过MSP430发送到模块。在该串行端口监视器输出中,两个模块均不能使用CTRL+Z (0x1A)((char)26)的十六进制等效值,而且它们之间除了CMGS响应之外没有什么区别。 它将给出消息计数。 我已附上文件GSM错误MONITORING.docx供您参考。

    [报价用户="Katie Pier "]
    此外,我发现您只是通过循环倒计时来使用一些软件延迟-可能编译器已对其进行了某种程度的优化,因为它不执行任何操作, 或者它没有采用正确的周期数-更可靠的方法是使用__DELAY周期(x);其中x是您要延迟的MSP430的CPU周期数。 [/引述]

    即使按照 您的建议修改了延迟代码,问题也仍然存在。

    如果没有看到UART_TXN函数,很难知道可能会出现什么问题。 [/引述]

    已插入UART_Txn函数。

     我已将编译器更改为IAR,以确定它是否是优化问题。 即使这样,也只会向手机发送空短信。 如果有人面临此类问题,请帮我解决。

    void UART_TXN( unsigned char *str, uint16_t size, uint8_t busNum)
    {
    I = 0;
    IF (busNum == 0)
    {
    		while ( size >0)
    		{
    			UCA0TXBUF = str[i+];
    			while (!(IFG2 & UCA0TXIFG));
    			size-;
    		}}
    	
    
    IF (busNum == 1)
    {
    		while (size > 0)
    		{
    			UCA1TXBUF = str[i++];
    			while (!(UC1IFG & UCA1TXIFG));
    			size-;
    		}
    }}
    } 

    提前感谢。

    e2e.ti.com/.../GSM-ERROR-MONITORING.docx

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的硬件连接:SIM800L GSM模块直接连接到MSP430的UART端口引脚,但对于SIM900A模块,我使用SIM900A模块的开发板,它在开发板中有电平转换器。 MSP 430的工作电压为3.5V,而SIM800L模块的工作电压为3-4V。
    此电平转换器是否会对此产生任何影响? 如果"是"表示,那么它如何允许发送空短信?
    谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Prakash,

    如果您能够访问示波器或在通信过程中显示电压水平的内容,而不仅仅是一个逻辑分析仪(它只能为您提供信号的数字解释),这将非常有用。 当您拥有MSP430和SIM800L时,您是使用相同的电源还是使用不同的电压从不同的电源供电? 有一个MSP430的规范,您 在任何引脚上都不能超过当前MSP430 Vcc +0.3V,因此,例如,如果MSP430以3V运行,而SIM800L以4V运行,则您将违反此规范,需要电平转换器。

    我还查找了SIM800L模块,它听起来可能会消耗大量电流-当它连接到MSP430时,您如何为其供电? 您需要能够提供足够电流而不会降低电压的设备。

    此致,

    Katie