内容发布更新时间 : 2024/12/27 3:59:02星期一 下面是文章的全部内容请认真阅读。
该字符的ASCII码值为“26”。如果取消发送,则以字符“ESC”结束。如果发送成功,则返回服务中心的时间戳,具体可以参看响应命令格式。如果发送不成功,则返回错误信息。 AT+CMGS=
该命令是用来发送基于PDU格式的短消息。如果发送成功,则响应为:+CMGS:
在该命令中,首先发送命令AT+CMGC=
删除短消息命令:AT+CMGD (删除SIM卡内存的短消息)
该命令主要用于短消息的删除,因为一般手机的存储量或者SIM卡的存储量是有限的,因此有时需要删除已经阅读过的短消息。它具体提供两条指令,具体的指令格式如下。 AT+CMGD=?
响应为OK。该指令主要是用来进行测试的。 AT+CMGR=INDEX
该命令主要用来删除指定位置的短消息。如果删除成功,则响应为OK,如果删除失败,则响应为:+CMS ERROR:
该命令主要用于阅读短消息的内容,它具体提供两条指令,具体的指令格式如下。
AT+CMGR=?
响应为OK。该指令主要用来进行测试。 AT+CMGR=INDEX
该命令主要用来阅读指定位置的短消息。如果操作成功,则响应为具体的短消息内容,针对TEXT模式和PDU模式,有不同的响应内容;如果操作失败,则响应变:+CMS ERROR:
29
选择消息格式命令:AT+CMGF
该命令主要用于设置短消息的格式,将短消息设置成TEXT格式或者PDU格式,它具体提供三条命令,具体的指令格式如下。 AT+CMGF=?
响应为OK。该指令主要用来进行测试。 AT+CMGF?
该命令主要用来读取格式。如果操作成功,则响应为+CMGF:
该命令主要用来设置格式。如果操作成功,则响应为+OK。当mode的值为“0”时,代表PDU格式;mode的值为“1”时,代表TEXT格式。 短信中心设置命令:AT+CSCA
该命令主要用于设置短信中心,它具体提供三条命令,具体的指令格式如下。 AT+CSCA=?
响应为OK。该指令主要用来进行测试。 AT+CSCA?
该命令主要用来读取短信中心的地址。如果操作成功,则响应为+CSCA:
该命令主要用来设置短信中心的地址。如果操作成功,则响应为+OK。
以上只列出了短消息操作的一些AT命令,其他AT命令就不再进行详细介绍了,具体可以参看AT命令手册。本系统采用的是PDU短信格式。
4.2.2 PDU 编码规则
PDU 模式收发短信可以使用 3 种编码:7-bit、8-bit 和 UCS2 编码。7-bit 编码用于发送普通的 ASCII 字符,8-bit 编码通常用于发送数据消息,UCS2 编码用于发送 Unicode 字符。一般的 PDU编码由 A B C D E F G H I J K L M 十三项组成。
A:短信息中心地址长度,2 位十六进制数(1 字节)。 B:短信息中心号码类型,2 位十六进制数。
30
C:短信息中心号码,B+C 的长度将由 A 中的数据决定。 D:文件头字节,2 位十六进制数。 E:信息类型,2 位十六进制数。 F:被叫号码长度,2 位十六进制数。
G:被叫号码类型,2 位十六进制数,取值同 B。 H:被叫号码,长度由 F 中的数据决定。 I:协议标识,2 位十六进制数。 J:数据编码方案,2 位十六进制数。 K:有效期,2 位十六进制数。 L:用户数据长度,2 位十六进制数。 M:用户数据,其长度由 L 中的数据决定。
由于本设计发送的是中文信息,所以 J 中设定采用 UCS2 编码,这里是中英文的 Unicode 字符。
4.2.3 短信模式设置
GSM模块的短信模式有2种。第1种是:TEXT模式;第2种是:PDU模式。PDU模式可以采用unicode编码发送英文、汉字。本系统采用的是PDU模式。设置如下:
AT+CMFG=1回车
4.2.4 短信的发送方法
第一步:发送接收的手机号码,AT+CMGS=\接收信息的手机号)\回车。等待答应“>” ;TC35回应:“>”
第二部:输入短信息的内容:Test 回车
4.3 SPI协议
4.3.1 SPI协议的介绍
SPI(Serial Peripheral Interface)是一种串行串行同步通讯协议,由一个主设备和一个或多个从设备组成,主设备启动一个与从设备的同步通讯,从而完成数据的交换。SPI 接口由SDI(串行数据输入),SDO(串行数据输出),SCK(串行移位时钟),CS(从使能信号)四种信号构成,CS 决定了唯一的与主设备通信的从设备,如没有CS 信号,则只能存在一个从设备,主设备通过产生移位时钟来发起通讯。通讯时,数据由SDO 输出,SDI 输入,数据在时钟的上升或下
31
降沿由SDO 输出,在紧接着的下降或上升沿由SDI 读入,这样经过8/16 次时钟的改变,完成8/16 位数据的传输。该总线通信基于主-从(所有的串行的总线均是这样,USB,IIC,SPI等)配置,而且下面提到的方向性的操作合指代全部从主设备的角度说得。它有以下4个信号:
(1)SDO – 主设备数据输出,从设备数据输入 (2)SDI – 主设备数据输入,从设备数据输出 (3)SCLK – 时钟信号,由主设备产生 (4)CS – 从设备使能信号,由主设备控制
其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效。这就允许在同一总线上连接多个SPI设备成为可能。
接下来就负责通讯的3根线了。通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCLK时钟线存在的原因,由SCLK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。数据输出通过 SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同样原理。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输。
要注意的是,SCLK信号线只由主设备控制,从设备不能控制信号线。同样,在一个基于SPI的设备中,至少有一个主控设备。这样传输的特点:这样的传输方式有一个优点,与普通的串行通讯不同,普通的串行通讯一次连续传送至少8位数据,而SPI允许数据一位一位的传送,甚至允许暂停,因为SCLK时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据。也就是说,主设备通过对SCLK时钟线的控制可以完成对通讯的控制。SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。不同的SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义,具体请参考相关器件的文档。
在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。在多个从设备的系统中,每个从设备需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。
最后,SPI接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据。
AT91RM9200的SPI接口主要由4个引脚构成:SPICLK、MOSI、MISO及 /SS,其中SPICLK是整个SPI总线的公用时钟,MOSI、MISO作为主机,从机的输入输出的标志,MOSI是主机的输出,从机的输入,MISO 是主机的输入,
32
从机的输出。/SS是从机的标志管脚,在互相通信的两个SPI总线的器件,/SS管脚的电平低的是从机,相反/SS管脚的电平高的是主机。在一个SPI通信系统中,必须有主机。SPI总线可以配置成单主单从,单主多从,互为主从。
SPI的片选可以扩充选择16个外设,这时PCS输出=NPCS,说NPCS0~3接4-16译码器,这个译码器是需要外接4-16译码器,译码器的输入为NPCS0~3,输出用于16个外设的选择。
在SPI传输中,数据是同步进行发送和接收的。数据传输的时钟基于来自主处理器的时钟脉冲(好像也可以是IO上的电平的模拟时钟),摩托罗拉没有定义任何通用SPI的时钟规范。然而,最常用的时钟设置基于时钟极性(CPOL)和时钟相位(CPHA)两个参数,CPOL定义SPI串行时钟的活动状态,而CPHA定义相对于SO-数据位的时钟相位。CPOL和CPHA的设置决定了数据取样的时钟沿。
4.3.1 数据方向和通信速度
SPI传输串行数据时首先传输最高位。波特率可以高达5Mbps,具体速度大小取决于SPI硬件。例如,Xicor公司的SPI串行器件传输速度能达到5MHz。SPI总线接口及时序SPI总线包括1根串行同步时钟信号线以及2根数据线。
SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设音时钟相位和极性应该一致。SPI接口时序如图4.3、图4.4所示。
图4.3 CPHA=0时SPI总线数据传输时序
33