关于串口SCIA的问题,2812核,串口数据不对?大师解答一下...

2019-07-15 20:15发布

#include "DSP28_Device.h"
// Prototype statements for functions found within this file.void Gpio_select(void);void Initsystem(void);void SCI_Init(void);void main(void) {//   char message[]={"the F2812 - UART is fine! "};// char MESSAGE[]={"ABCDEFG"};  int AAA[200];   int index = 0;   long i,j;   Initsystem();   Gpio_select();   SCI_Init();   while(1) {   for(j=0;j<200;j++)     {  AAA[j]=j;}           SciaRegs.SCITXBUF=AAA[index++];//  SciaRegs.SCITXBUF=message[index++];         //SciaRegs.SCITXBUF=MESSAGE[index++];
         while(SciaRegs.SCICTL2.bit.TXEMPTY == 0);         //状态检测模式         //状态检测,等待发送标志为空:TXEMPTY = 0         EALLOW;         SysCtrlRegs.WDKEY = 0x55;//看门狗控制         SysCtrlRegs.WDKEY = 0xAA;         EDIS;         if(index>26) {           index = 0;           for(i=0;i<15000000;i++)//软件延时,近似2S             {               EALLOW;                SysCtrlRegs.WDKEY = 0x55;//看门狗控制                        SysCtrlRegs.WDKEY = 0xAA;                EDIS;                        }                }        }}
void Gpio_select(void) {   EALLOW;   GpioMuxRegs.GPAMUX.all=0x0;//所有GPIO端口配置为I/O   GpioMuxRegs.GPBMUX.all=0x0;   GpioMuxRegs.GPDMUX.all=0x0;   GpioMuxRegs.GPFMUX.all=0x0;//   GpioMuxRegs.GPFMUX.bit.SCIRXDA=1;//配置 SCI-RX//   GpioMuxRegs.GPFMUX.bit.SCITXDA=1;//配置 SCI-TX   GpioMuxRegs.GPFMUX.all=0x0030; //配置 SCI-RX,配置 SCI-TX   GpioMuxRegs.GPEMUX.all=0x0;   GpioMuxRegs.GPGMUX.all=0x0;
   GpioMuxRegs.GPADIR.all=0x0; //GPIO PORT 配置为输入   GpioMuxRegs.GPBDIR.all=0x0; //GPIO PORT 配置为输入   GpioMuxRegs.GPDDIR.all=0x0; //GPIO PORT 配置为输入   GpioMuxRegs.GPEDIR.all=0x0; //GPIO PORT 配置为输入   GpioMuxRegs.GPFDIR.all=0x0; //GPIO PORT 配置为输入   GpioMuxRegs.GPGDIR.all=0x0; //GPIO PORT 配置为输入
   GpioMuxRegs.GPAQUAL.all=0x0; //设置所有GPIO输入的量化值等于0   GpioMuxRegs.GPBQUAL.all=0x0;   GpioMuxRegs.GPDQUAL.all=0x0;   GpioMuxRegs.GPEQUAL.all=0x0;   EDIS;}//串口通讯配置(波特率,每帧包含的数据位长度,停止位长度,奇偶校验方式以及数据流控制等)void SCI_Init(void) { SciaRegs.SCICCR.all=0x0007;  //1停止位无循环模式                              //无极性,字符长度8BIT                                                          //异步模式,空闲线协议SciaRegs.SCICTL1.all=0x0003; //使能TX,RX,内部SCILK,                             //禁止RX ERR,SLEEP,TXWAKE//SciaRegs.SCICTL2.bit.TXRDY=0x01;SciaRegs.SCIHBAUD=487>>8;    //波特率:9600(LSPCLK=37.5Mhz)SciaRegs.SCILBAUD=487&0x00FF;SciaRegs.SCICTL1.all=0x0023;  //使SCI退出复位                    }
//SCI时钟进行配置,并使能SCI模块时钟void Initsystem(void)    {           EALLOW;           SysCtrlRegs.WDCR=0x00AF; //配置看门狗                                    //0x00e8 禁止看门狗,预定标系数Prescaler=1                                                                //0x00AF 不禁止看门狗,预定标系数Prescaler=64           SysCtrlRegs.SCSR.bit.WDENINT=0x0;    //看门狗复位       SysCtrlRegs.SCSR.bit.WDOVERRIDE=0x00;
           SysCtrlRegs.PLLCR=0x5;   //配置处理器锁相环,倍频系数5           SysCtrlRegs.HISPCP.all= 0x1;      //配置高速外设时钟分频系数2           SysCtrlRegs.LOSPCP.all = 0x2;     //配置高速外设时钟分频系数4
           //设置使用的外设时钟           //一般不使用的外设时钟禁止,降低系统能耗           SysCtrlRegs.PCLKCR.bit.EVAENCLK=0;           SysCtrlRegs.PCLKCR.bit.EVBENCLK=0;                      SysCtrlRegs.PCLKCR.bit.MCBSPENCLK=0;           SysCtrlRegs.PCLKCR.bit.SPIENCLK=0;           SysCtrlRegs.PCLKCR.bit.ECANENCLK=0;           SysCtrlRegs.PCLKCR.bit.ADCENCLK=0;           SysCtrlRegs.PCLKCR.bit.SCIENCLKA=1;//使能SCI模块的时钟           SysCtrlRegs.PCLKCR.bit.SCIENCLKB=0;           EDIS;           }
串口中独到的数据66 00 78 00 00 06 0C 06 03 0C 00 80 78 00 00 00 00 FE 9E 06 0E 00 00 FE 60 33 FC 00 00 00 80 78 00 00 00 00 FE 9E 06 FC

这是为什么?读到的数据是不对的,不明白了,谁能告诉我程序如何改





友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。