主题中讨论的其他器件: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