TI论坛
直播中

张秀华

7年用户 160经验值
私信 关注
[问答]

2808的SCI通信发送两个数据后TXRDY位就自动变为零了

用2808的SCIa实现串行通信,可是单步执行时发现发送两个数据后TXRDY位就自动变为零了   这是什么原因呢?

回帖(8)

温洁

2018-11-13 15:03:49
变零以后再也变不回来吗?
举报

张秀华

2018-11-13 15:20:04
引用: arikey 发表于 2018-11-13 20:07
变零以后再也变不回来吗?

是的  变零以后就再也变不回来了     请问这是什么原因呢?
举报

冯敬宇

2018-11-13 15:32:43
zhujing,
      你的SCI有没有使能FIFO功能?TXRDY标志位在写入数据之后会自动清零。有没有具体代码,把情况说得更具体点。
                                                                         - ERIC
举报

张秀华

2018-11-13 15:38:31
引用: guigui_7044 发表于 2018-11-13 20:36
zhujing,
      你的SCI有没有使能FIFO功能?TXRDY标志位在写入数据之后会自动清零。有没有具体代码,把情况说得更具体点。
                                                                         - ERIC

我没有使用FIFO功能,就是简单的程序如下:
#include "DSP280x_Device.h"     // Headerfile Include File
#include "DSP280x_Examples.h"   // Examples Include File
Uint16 Sci_VarRx[10]=[0x11,0xee,0x33,0xaa,0x44,0xbb,0x55,0xcc,0x66,0xdd];
 unsigned int i;
void InitSci()
 [  
      SciaRegs.SCICCR.bit.STOPBITS=0;  
      SciaRegs.SCICCR.bit.PARITYENA=0;  
      SciaRegs.SCICCR.bit.LOOPBKENA=0;  
      SciaRegs.SCICCR.bit.ADDRIDLE_MODE=0;  
      SciaRegs.SCICCR.bit.SCICHAR=7;  
      SciaRegs.SCICTL1.bit.TXENA=1;  
      SciaRegs.SCICTL1.bit.RXENA=0;  
      SciaRegs.SCIHBAUD=0x01;  
      SciaRegs.SCILBAUD=0x43;  
      SciaRegs.SCICTL1.bit.SWRESET=1; 
 ]
void InitGpio()
 [
    EALLOW;
    GpioCtrlRegs.GPAPUD.bit.GPIO28= 0;   
    GpioCtrlRegs.GPAMUX2.bit.GPIO28=1; 
     EDIS;
]
void main()
 [ 
    InitSysCtrl();//关闭看门狗 初始化系统时钟和外设时钟   
    DINT;
    IER = 0x0000;
    IFR = 0x0000;
   InitPieCtrl();
    InitPieVectTable();
    InitGpio();
    InitSci();
    i=0;
    for(;;)
    [        
            if(SciaRegs.SCICTL2.bit.TXRDY) 
                  [
                       SciaRegs.SCITXBUF = Sci_VarRx;
                       i++;
                    ]          
    }

//===================================== // No more. //=====================================//
最开始单步运行时SCICTL2为0x00C0,然后可以把数据0x11传到buff,继续单步时SCICTL2为0x0080,然后可以把数据0xee传到buff,然后再一直单步时SCICTL2就一直是0x0000了,而我全部运行后然后又暂停,buff的值会在数组中的数之间变化,但是SCICTL2的值一直是0x0000。请问这是什么原因呢?
 
 
举报

更多回帖

×
20
完善资料,
赚取积分