请选择 进入手机版 | 继续访问电脑版

TI DSP 28335 SCI FIFO中断 串口232通信

[复制链接]
西门听雨 发表于 2021-1-1 09:58:24 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
文章目次



  1 SCIA FIFO 串口通信配置步骤

1.1 使能SCIA外设时钟

  1.         EALLOW;        SysCtrlRegs.PCLKCR0.bit.SCIAENCLK = 1;   // SCI-A        EDIS;
复制代码
1.2 初始化SCIA对应GPIO

  1. void InitSciaGpio(){   EALLOW;/* Enable internal pull-up for the selected pins */// Pull-ups can be enabled or disabled disabled by the user.  // This will enable the pullups for the specified pins.        GpioCtrlRegs.GPBPUD.bit.GPIO36 = 0;    // Enable pull-up for GPIO36 (SCIRXDA)        GpioCtrlRegs.GPBPUD.bit.GPIO35 = 0;           // Enable pull-up for GPIO35 (SCITXDA)/* Set qualification for selected pins to asynch only */// Inputs are synchronized to SYSCLKOUT by default.  // This will select asynch (no qualification) for the selected pins.        GpioCtrlRegs.GPBQSEL1.bit.GPIO36 = 3;  // Asynch input GPIO28 (SCIRXDA)/* Configure SCI-A pins using GPIO regs*/// This specifies which of the possible GPIO pins will be SCI functional pins.        GpioCtrlRegs.GPBMUX1.bit.GPIO36 = 1;   // Configure GPIO36 for SCIRXDA operation        GpioCtrlRegs.GPBMUX1.bit.GPIO35 = 1;   // Configure GPIO35 for SCITXDA operation            EDIS;}
复制代码
1.3 SCI工作方式

1.3.1 数据格式

  1.         // 1位停止位,奇极性,无奇偶校验,无回送测试,空闲所在模式,8位字符        ScibRegs.SCICCR.bit.STOPBITS = 0;//0-One stop bit; 1-Two stop bits        SciaRegs.SCICCR.bit.PARITY = 0;//0-Odd parity; 1-Even parity        SciaRegs.SCICCR.bit.PARITYENA = 0;//0-Parity disable; 1-Parity enable        SciaRegs.SCICCR.bit.LOOPBKENA = 0;//0-loopback disable; 1-loopback enable        SciaRegs.SCICCR.bit.ADDRIDLE_MODE = 0;//0-idle-line; 1-address-bit        SciaRegs.SCICCR.bit.SCICHAR = 0x7;//character length = 8                // SCIA发送使能,吸收使能        SciaRegs.SCICTL1.bit.TXENA = 1;        SciaRegs.SCICTL1.bit.RXENA = 1;
复制代码
1.3.2 波特率

  1.         unsigned char scihbaud=0;        unsigned char scilbaud=0;        Uint16 scibaud=0;        scibaud=37500000/(8*baud)-1;        scihbaud=scibaud>>8;        scilbaud=scibaud&0xff;                SciaRegs.SCIHBAUD    =scihbaud;          SciaRegs.SCILBAUD    =scilbaud;
复制代码
1.3.3 FIFO寄存器配置

  1.         // SciaRegs.SCIFFTX.all=0xC028;        SciaRegs.SCIFFTX.bit.SCIRST = 1;        // FIFO复位        SciaRegs.SCIFFTX.bit.SCIFFENA = 1;      // 使能FIFO        //SciaRegs.SCIFFTX.bit.TXFFINTCLR = 1;  // 清除发送FIFO中断标志位        SciaRegs.SCIFFTX.bit.TXFFIENA = 1;      // 使能发送FIFO中断        SciaRegs.SCIFFTX.bit.TXFFIL = 8;        // 发送FIFO中断级别        // SciaRegs.SCIFFRX.all=0x0028;        SciaRegs.SCIFFRX.bit.RXFFIENA = 1;      // 使能吸收FIFO中断        SciaRegs.SCIFFRX.bit.RXFFIL = 8;        // 吸收FIFO中断级别                SciaRegs.SCIFFCT.all=0x00;              // FIFO传送延时为0                   SciaRegs.SCICTL1.bit.SWRESET=1;         // 重启SCIA        SciaRegs.SCIFFTX.bit.TXFIFOXRESET=1;    // 重新使能发送FIFO的操作           SciaRegs.SCIFFRX.bit.RXFIFORESET=1;     // 重新使能吸收FIFO的操作   
复制代码
2 串口发送数据函数

  1.         // Transmit a character from the SCI'        void UARTa_SendByte(int a)        {                while (SciaRegs.SCIFFTX.bit.TXFFST != 0);    // 发送FIFO不为空                SciaRegs.SCITXBUF=a;        }                void UARTa_SendString(char * msg)        {                int i=0;                        while(msg[i] != '\0')                {                        UARTa_SendByte(msg[i]);                        i++;                }        }
复制代码
3 ISR

注:一定要在适合的地方实时清除FIFO中断标志位,使其响应新的中断!!!
3.1 发送中断函数

注:如果清除发送中断标志位,则系统会一直发送rdataA!
  1. interrupt void sciaTxFifoIsr(void){        msg = "\n\nDSP Send: ";        UARTa_SendString(msg);        Uint16 i;        for(i=0; i< 8; i++)        {           SciaRegs.SCITXBUF=rdataA[i];     // Send data        }                //SciaRegs.SCIFFTX.bit.TXFFINTCLR=1;  // Clear SCI Interrupt flag        PieCtrlRegs.PIEACK.all|=0x100;      // Issue PIE ACK        EINT;}
复制代码
3.2 吸收中断函数

注:在此处清除发送中断标志位,使其响应新的发送中断。
[code]interrupt void sciaRxFifoIsr(void){        Uint16 i;        for(i=0;i
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )