主题中讨论的其他器件:TMDSDOCK28035、controlSUITE
您好!
我正在使用 SIM900模块与 Piccolo 28035微控制器进行通信。
我必须执行以下操作:
1、微控制器的 TX buf 将发送的数据
2.从微控制器的 TX buf 发送的 AT 命令 以及延迟。
无论我发送了什么、我都必须在 RXBUF 中看到。
如何在同一代码中组合点1和2。
任何人都能提供帮助。
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.
您好!
我正在使用 SIM900模块与 Piccolo 28035微控制器进行通信。
我必须执行以下操作:
1、微控制器的 TX buf 将发送的数据
2.从微控制器的 TX buf 发送的 AT 命令 以及延迟。
无论我发送了什么、我都必须在 RXBUF 中看到。
如何在同一代码中组合点1和2。
任何人都能提供帮助。
主席先生,请看下面的设置。但我没有看到 RX buf 中的内容。
void scia_fifo_init () { EALLOW; GpioCtrlRegs.GPAPUD.bit.GPIO6 = 1;// GPIO24用于 RS-485启用 GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 0; GpioCtrlRegs.GPADIR.bit.GPIO6 = GPPIO6;GPPIO6 = GPIPO6 = GPIPOL.bit.GPIO6;GPIPO6 = GPIPO6 = GPIPO6 = GPIPO6 = GPIPO6 = GPIPO6 //为 GPIO7 (SCIRXDA) GpioCtrlRegs.GPAPUD.bit.GPIO12启用上拉电阻= 0;//为 GPIO12 (SCITXDA) GpioCtrlRegs.GPAQSEL1.bit.GPIO7 = 3启用上拉; //异步输入 GPIO7 (SCIRXDA) GpioCtrlRegs.GPAMUX1.bit.GPIO7=2; //为 SCIRXDA 操作配置 GPIO7 GpioCtrlRegs.GPAMUX1.bit.GPIO12=2; //为 SCITXDA 操作 EDIS 配置 GPIO12; SciaRegs.SCICCR.all = 0x0017; // 1停止位,无环回 //无奇偶校验,8个字符位, //异步模式,空闲线协议 SciaRegs.SCICTL1.all = 0x0001;// 0x0003 //启用 TX、RX、内部 SCICLK、 //禁用 RX ERR、SLEEP、TXWAKE SciaRegs.SCICT2.bit.TXINTENA=1; SciaRegs.SCICT2.bit.RXBKINTENA=1; SciaRegs.SCIHBAUD = 0x0000; SciaRegs.SCILBAUD = 0x00C2; //1250000//1;//625000//15;//-56000 //30;//-38265//61/-19200;//C2;//-9600 SciaRegs.SCIFFTX.all = 0xC020; SciaRegs.SCIFFRX.ALL = 0x0022; SciaRegs.SCIFFCT.all = 0x0000; SciaRegs.SCIPRI.All = 0x0010; SciaRegs.SCICTL1.all = 0x0021;// 0x0023 //从复位 SciaRegs.SCIFFTX.bit.TXFIFOXRESET 中放弃 SCI = 1; SciaRegs.SCIFFRX.bit.RXFIFORESET = 1; CLEAR_Tx_FRAME (); CLEAR_Tx_FRAME (); }
请找到我的代码。 如有必要、请更正我。
/******** 帧格式******* /
/********* //
标头检测
//器件 ID、帧大小
//D1
//D2
//D3
//DN
// CRC
#include "DSP2803x_Device.h" // DSP2803x 头文件包含文件
char Tx_FRAME[缓冲区大小]、Tx_Frame_len = 0;// 60 8位
char Rx_FRAME[缓冲区大小]、Rx_Frame_len = 0;
volatile char Rx_Data_received = 0、CRC_Check_begin = 0;
union data_BIT16 Rx_Data[MAX_RAME_MAX_RATE]
;*tx_RAME_1 ch_DATA_MAX_SIZE *
char Tx_buffer_index = 0;
静态常量 char aucCRCchi[]={
0x00、0xC1、0x81、0x40、0x01、 0xC0、0x80、0x41、0x01、0xC0、 0x80、0x41、
0x00、0xC1、0x81、0x40、0x01、 0xC0、0x80、0x41、0x00、0xC1、 0x81、0x40、
0x00、0xC1、0x81、0x40、0x01、 0xC0、0x80、0x41、0x01、0xC0、 0x80、0x41、
0x00、0xC1、0x81、0x40、0x00、 0xC1、0x81、0x40、0x01、0xC0、 0x80、0x41、
0x00、0xC1、0x81、0x40、0x01、 0xC0、0x80、0x41、0x01、0xC0、 0x80、0x41、
0x00、0xC1、0x81、0x40、0x01、 0xC0、0x80、0x41、0x00、0xC1、 0x81、0x40、
0x00、0xC1、0x81、0x40、0x01、 0xC0、0x80、0x41、0x00、0xC1、 0x81、0x40、
0x01、0xC0、0x80、0x41、0x01、 0xC0、0x80、0x41、0x00、0xC1、 0x81、0x40、
0x00、0xC1、0x81、0x40、0x01、 0xC0、0x80、0x41、0x01、0xC0、 0x80、0x41、
0x00、0xC1、0x81、0x40、0x01、 0xC0、0x80、0x41、0x00、0xC1、 0x81、0x40、
0x00、0xC1、0x81、0x40、0x01、 0xC0、0x80、0x41、0x01、0xC0、 0x80、0x41、
0x00、0xC1、0x81、0x40、0x00、 0xC1、0x81、0x40、0x01、0xC0、 0x80、0x41、
0x00、0xC1、0x81、0x40、0x01、 0xC0、0x80、0x41、0x01、0xC0、 0x80、0x41、
0x00、0xC1、0x81、0x40、0x00、 0xC1、0x81、0x40、0x01、0xC0、 0x80、0x41、
0x01、0xC0、0x80、0x41、0x00、 0xC1、0x81、0x40、0x01、0xC0、 0x80、0x41、
0x00、0xC1、0x81、0x40、0x00、 0xC1、0x81、0x40、0x01、0xC0、 0x80、0x41、
0x00、0xC1、0x81、0x40、0x01、 0xC0、0x80、0x41、0x01、0xC0、 0x80、0x41、
0x00、0xC1、0x81、0x40、0x01、 0xC0、0x80、0x41、0x00、0xC1、 0x81、0x40、
0x00、0xC1、0x81、0x40、0x01、 0xC0、0x80、0x41、0x01、0xC0、 0x80、0x41、
0x00、0xC1、0x81、0x40、0x00、 0xC1、0x81、0x40、0x01、0xC0、 0x80、0x41、
0x00、0xC1、0x81、0x40、0x01、 0xC0、0x80、0x41、0x01、0xC0、 0x80、0x41、
0x00、0xC1、0x81、0x40
};
静态常量字符 aucCRCLo[]={
0x00、0xC0、0xC1、0x01、0xC3、 0x03、0x02、0xC2、0xC6、0x06、 0x07、0xC7、
0x05、0xC5、0xC4、0x04、0xCC、 0x0C、0x0D、0xCD、0x0F、0xCF、 0xCE、0x0E、
0x0A、0xCA、0xCB、0x0B、0xC9、 0x09、0x08、0xC8、0xD8、0x18、 0x19、0xD9、
0x1b、0xDB、0xDA、0x1A、0x1E、 0xDE、0xDF、0x1F、0xDD、0x1D、 0x1C、0xDC、
0x14、0xD4、0xD5、0x15、0xD7、 0x17、0x16、0xD6、0xD2、0x12、 0x13、0xD3、
0x11、0xD1、0xD0、0x10、0xF0、 0x30、0x31、0xF1、0x33、0xF3、 0xF2、0x32、
0x36、0xF6、0xF7、0x37、0xf5、 0x35、0x34、0xF4、0x3C、0xFC、 0xFD、0x3D、
0xFF、0x3F、0x3E、0xFE、0xFA、 0x3A、0x3B、0xFB、0x39、0xF9、 0xf8、0x38、
0x28、0xE8、0xE9、0x29、0xEB、 0x2B、0x2A、0xEA、0xEE、0x2E、 0x2F、0xEF、
0x2D、0xED、0xEC、0x2C、0xE4、 0x24、0x25、0xE5、0x27、0xE7、 0xE6、0x26、
0x22、0xE2、0xE3、0x23、0xE1、 0x21、0x20、0xE0、0xA0、0x60、 0x61、0xA1、
0x63、0xA3、0xA2、0x62、0x66、 0xA6、0xA7、0x67、0xA5、0x65、 0x64、0xA4、
0x6C、0xAC、0xAD、0x6D、0xAF、 0x6f、0x6E、0xAE、0xAA、0x6A、 0x6B、0xAB、
0x69、0xA9、0xA8、0x68、0x78、 0xB8、0xB9、0x79、0xBB、0x7B、 0x7A、0xBA、
0xBE、0x7E、0x7F、0xBF、0x7D、 0xBD、0xBC、0x7C、0xB4、0x74、 0x75、0xB5、
0x77、0xB7、0xB6、0x76、0x72、 0xB2、0xB3、0x73、0xB1、0x71、 0x70、0xB0、
0x50、0x90、0x91、0x51、0x93、 0x53、0x52、0x92、0x96、0x56、 0x57、0x97、
0x55、0x95、0x94、0x54、0x9C、 0x5C、0x5D、0x9D、0x5F、0x9F、 0x9E、0x5E、
0x5A、0x9A、0x9B、0x5B、0x99、 0x59、0x58、0x98、0x88、0x48、 0x49、0x89、
0x4B、0x8B、0x8A、0x4A、0x4E、 0x8E、0x8F、0x4F、0x8D、0x4D、 0x4C、0x8C、
0x44、0x84、0x85、0x45、0x87、 0x47、0x46、0x86、0x82、0x42、 0x43、0x83、
0x41、0x81、0x80、0x40
};
//从 SCI 发送字符
char scia_xmit (char A)
{
while (SciaRegs.SCIFFTX.bit.TXFFST!= 0){}
SciaRegs.SCITXBUF=A;
返回 a;
}
char scia_msg (char * msg)
{
int i;
I = 0;
while (msg[i]!='\0')
{
scia_xmit (msg[i]);
i++;
}
返回 msg[i];
}
void transmit _dat (char nData、char Tx_device_address)//Enter "no of data"、"to address"、使用"Tx_data[]"数组存储 Tx 数据
{
// unsigned int crc_dat = 0;
int i;
I = 0;
TX_FRAME[0]= FRAME_HEADER>>8;//首先发送数据 MSB
TX_FRAME[1]= FRAME_HEADER;//帧头
TX_FRAME[2]= Tx_DEVICE_ADDRESS;//至地址
TX_FRAME[3]= 0x0400; //((nData * 2)+ 2);//数据字节数量(8位)
TX_FRAME[4]= 0x0000;
TX_buffer_index=5;
MSG ="AT+SAPBR=3、1、Contype、GPRS、DELAY、AT+SAPBR=1、1、DELAY、AT+SAPBR、DELAY、AT+SAPBR\0";
对于(Tx_buffer_index=5;Tx_buffer_index<400;Tx_buffer_index++)
{
if (msg[i]!='\0')
{
TX_FRAME[Tx_buffer_index]= scia_xmit (msg[i]);
}
i++;
}
GpioDataRegs.GPASET.bit.GPIO6 = 1;//将1写入使能引脚
SciaRegs.SCICTL1.bit.TXENA = 1;//启用传输中断
。}
unsigned int CRC16 (char * pucFrame、char len)//从引用表中检查 CRC。
{
特性 ucCRCCHi=0xFF;
特性 ucCRCLo = 0xFF;
内部 iIndex;
while (len---)
{
iIndex = ucCRCLo ^*(pucFrame ++);
ucCRCLo =(char)(ucCRCHi ^ aucCRCHi[iIndex]);
ucCRCCHi = aucCRCLo[iIndex];
}
return (unsigned int)(ucCRCCHi << 8 | ucCRCLo);
}
void clear_rx_frame (void)//清除 rx_frame
{
char j;
for (j = 0;j < buffer_size;j++)
{
rx_frame[j]= 0;
}
void clear_Tx_frame (void)// tx_size
(void = j;j+
= 0;j+= j;t = 0+= tx_char j;j+= 0+
}
__interrupt void sciaRxFifoIsr (void)
{//
在 RX_ISR 中要执行的操作
->如果连续两次比较失败,则重置 RX_pos
->断言标头检测= 0;
->如果 Rx 启动,则启用 RX_Receiving = 1,启动计数器并重置所有内容(以确保代码不会在半帧状态中被击中)
->当 RX_FRAME 长度等于指定的帧长度时设置 CHECK_CRC 标志-完成
->在 ISR 循环外部检查 CRC -完成*/
静态易失性无符号字符 Header_Detect = 0、RX_pos = 0、RX_ISR_COUNT = 0;
RX_ISR_COUNT++;
while (SciaRegs.SCIFFRX.bit.RXFFST!= 0+)
RXSCRx_RXFP+= 0+帧
SciaRegs.SCIFFRX.bit.RXFFOVRCLR=1;//清除溢出标志
SciaRegs.SCIFFRX.bit.RXFFINTCLR=1;//清除中断标志
PieCtrlRegs.PIEACK.All|=0x100; //发出 PIE ACK
}//
在
发送 Tx_FRAME 时,在 Rx_ISR 中执行的操作禁用 Tx_int。
将 ENABLE 设置为低
电平复位 txpos
*/
_中断 void sciaTxFifoIsr (void)
{
SciaRegs.SCIFFTX.bit.TXFFINTCLR=1;//清除 SCI 中断标志
PieCtrlRegs.PIEACK.ALL=0x100; //发出 PIE ACK
asm (" NOP");
EINT;
静态无符号字符 Tx_pos = 0;
while (((SciaRegs.SCIFFTX.bit.TXFFST < 4)&&(Tx_pos < Tx_Fram_len))
{
SciaRegs.SCITXBUF = Tx_FRAME[Tx_pos++;
}
if ((Tx_pos >= Tx_Fram_len)&&(ICTARegs.SCICTL1.bit.TXENA=1)//if ((Tx_pos >= Tx_Fram_len)&&(SciaRegs.SCICTL1.bit.TXENA=1)
{
clear_Rx_FRAME();//SCSCSCPIREG0.GPIO1.bit.GPIOREG0.GPIOREG0.G0.GPIOREG0.GPIORG0.GPIO.GPIOA1.G0.GPIOL.GACT.GACT.GACLESL.GACL=1
//禁用传输中断。
TX_POS=0;
Tx_Frame_len = 0;
}
DINT;
}
void scia_fifo_init ()
{
EALLOW;
GpioCtrlRegs.GPAPUD.bit.GPIO6 = 1;// GPIO24用于 RS-485 GPioCtrlRegs.GPAMUX1.bit.GPIO6
;GPIO6
= GPPIOL.GPIPRC.0=GPPIOLD.GPIO6 = GPIP.GPO6;GPIPR1.bit.GPIO6 = GPO6 = GPPIO6 = GPIPR1.GPIP.GPIP.GPIP.GPIPR1.GPIP.GPO6 = GPIPR1.GPIP.GPIP.GPO6 = GPIP.GPIP.GPIP.GPOLD. //为 GPIO7 (SCIRXDA)
GpioCtrlRegs.GPAPUD.bit.GPIO12启用上拉电阻= 0;//为 GPIO12 (SCITXDA)
GpioCtrlRegs.GPAQSEL1.bit.GPIO7 = 3启用上拉; //异步输入 GPIO7 (SCIRXDA)
GpioCtrlRegs.GPAMUX1.bit.GPIO7=2; //为 SCIRXDA 操作配置 GPIO7
GpioCtrlRegs.GPAMUX1.bit.GPIO12=2; //为 SCITXDA 操作
EDIS 配置 GPIO12;
SciaRegs.SCICCR.all = 0x0007; // 1停止位,无环回
//无奇偶校验,8个字符位,
//异步模式,空闲线协议
SciaRegs.SCICTL1.all = 0x0001;// 0x0003 //启用 TX、RX、内部 SCICLK、
//禁用 RX ERR、SLEEP、TXWAKE
SciaRegs.SCICT2.bit.TXINTENA=1;
SciaRegs.SCICT2.bit.RXBKINTENA=1;
SciaRegs.SCIHBAUD = 0x0000;
SciaRegs.SCILBAUD = 0x00C2; //1250000//1;//625000//15;//-56000 //30;//-38265//61/-19200;//C2;//-9600
SciaRegs.SCIFFTX.all = 0xC020;
SciaRegs.SCIFFRX.ALL = 0x0022;
SciaRegs.SCIFFCT.all = 0x0000;
SciaRegs.SCIPRI.All = 0x0010;
SciaRegs.SCICTL1.all = 0x0021;// 0x0023 //从复位
SciaRegs.SCIFFTX.bit.TXFIFOXRESET 中放弃 SCI = 1;
SciaRegs.SCIFFRX.bit.RXFIFORESET = 1;
CLEAR_Tx_FRAME ();
CLEAR_Tx_FRAME ();
}
注意:在主函数中、我有如下函数调用:
#define MAX_FRAME_DATA_SIZE 512/10///16位数据的数量//两个8位 的倍数#define buffer_size 1024//数据大小应大于2倍 #define Device_ID 0x01//器件 ID #define FRAME_HEADER 0xAABB// COMM 帧检测标头 scia_fifo_init (); transmit _dat (30、temp_address);
[引用用户="Ramakrishna Dutt"] msg ="AT+SAPBR=3,1,1,Contype,GPRS,delay,AT+SAPBR=1,delay,AT+SAPBR,delay,AT+SAPBR\0";[/引号]
据我所知,您正在尝试发送多个 AT 命令而不返回回车。 这是不正确的、我可以在上面看到4条 AT 命令、对吧?
此外、您应该首先尝试在终端应用程序上发送这些命令、以验证您要发送的内容。
此致、
Gautam
因此、我需要发送为:
MSG ="AT+SAPBR=3、1、Contype、GPRS、DELAY、AT+SAPBR=1、1、DELAY、AT+SAPBR、DELAY、AT+SAPBR\n\r\n";
这种方法是正确的。
或者、我必须发送如下内容:
MSG ="AT+SAPBR=3、1、Contype、GPRS、\n\n\r、延迟、AT+SAPBR=1、1、\n\r、延迟、AT+SAPBR、\n\r、延迟、AT+SAPBR、\n\r、\0";
注意:我已经使用超级终端尝试了所有 AT 命令、这些命令运行正常。
我已经尝试了所有三种模式:
1.呼叫
2.短信
使用 SIM 900模块实现 HTTP。
这些测试工作正常、但所有这些测试仅使用 SIM900模块、PC 和 Hyper 终端完成。
这不涉及微控制器编程、只是为了验证 SIM900模块的功能。
[引用用户="Ramakrishna Dutt"]
或者、我必须发送如下内容:
MSG ="AT+SAPBR=3、1、Contype、GPRS、\n\n\r、延迟、AT+SAPBR=1、1、\n\r、延迟、AT+SAPBR、\n\r、延迟、AT+SAPBR、\n\r、\0";
[/报价]
我会推荐:
MSG="AT+SAPBR=3,1,Contype,GPRS\r";
发送消息
delay();
MSG="AT+SAPBR=1、1\r";
等等
同样、您知道 SIM 模块通过超级终端响应哪些命令、对吧? 然后、只需通过 micro 命令突发相同的命令、并在连接 SIM 模块之前检查超级终端是否接收到相同的命令。
此致、
Gautam