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.

[参考译文] TMS320F28035:TMS320F28035

Guru**** 2341440 points
Other Parts Discussed in Thread: TMDSDOCK28035, CONTROLSUITE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/589986/tms320f28035-tms320f28035

器件型号:TMS320F28035
主题中讨论的其他器件:TMDSDOCK28035、controlSUITE

您好!

我正在使用 SIM900模块与 Piccolo 28035微控制器进行通信。

我必须执行以下操作:

1、微控制器的 TX buf 将发送的数据

2.从微控制器的 TX buf 发送的 AT 命令 以及延迟。

无论我发送了什么、我都必须在 RXBUF 中看到。

如何在同一代码中组合点1和2。

任何人都能提供帮助。

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

    您好 RK、

    [引用 user="Ramakrishna Dutt"]无论我发送了什么,我都必须在 RXBUF 中看到。[/引用]

    这是您观察到的情况? 只需禁用环回功能。 SCICCR 寄存器具有环回位。 请参阅 SCI 用户指南。


    此致、
    Gautam

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、
    我将这样做、我将更新最新的代码。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    主席先生,请看下面的设置。但我没有看到 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 ();
    
    } 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我还不清楚、您在 RXBuf 中需要什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请找到我的代码。 如有必要、请更正我。

    /******** 帧格式******* /
    /********* //
    标头检测
    //器件 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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    没关系。
    但是、SCI 配置和 ISR 中是否需要更改、因为我在 RXBUFFER 上没有任何内容。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    如果您使用的是 F28035开发套件/EVM、例如 TMDSDOCK28035、则可能需要编辑一些跳线设置或开关设置。  为了使 UART-RX/SCI-RX 信号无争用地进入 F28035器件、可能需要执行此操作。  controlSUITE 中的原理图应能够帮助您完成硬件开发。  


    谢谢、
    Brett