|
本帖最后由 chendelta 于 2018-12-17 16:26 编辑
28377D 开发板,测试串口输出。main中反复输出 F0CA,通过RS-232转USB输入到PC。接收到的数据部分正确,部分错误。波特率从 1200 到 115200都是如此,用matlab和sscom接收都一样。请问可能的原因是什么?谢谢!
代码如下:
+++++++++
#include "F28x_Project.h"
#include "F2837xD_Ipc_drivers.h"
#include "SciStdio.h"
void SCIInit(void);
#define _STANDALONE
#define _FLASH
#ifdef _FLASH
// 这些定义在 .cmd 文件中
extern Uint16 RamfuncsLoadStart;
extern Uint16 RamfuncsLoadSize;
extern Uint16 RamfuncsRunStart;
#endif
void main(void)
{
Uint16 data_out = 0xF0CA, TX_LO, TX_HI;
// 把分配到 ramfuncs 段中的实时性要求高的关键代码从Flash中拷贝到RAM里执行
// 具体请查看 .cmd 文件
#ifdef _FLASH
memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);
#endif
// 系统初始化,配置PLL,关闭看门狗,使能外设时钟
InitSysCtrl();
#ifdef _STANDALONE
#ifdef _FLASH
// 发送 boot 命令,允许 CPU2 开始执行应用程序
IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH);
#else
// 发送 boot 命令,允许 CPU2 开始执行应用程序
IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_RAM);
#endif
#endif
// 片上 Flash 初始化
#ifdef _FLASH
InitFlash();
#endif
// 初始化 GPIO
InitGpio();
EALLOW;
GpioCtrlRegs.GPDMUX2.bit.GPIO115 = 0; // 选择引脚功能为GPIO功能
GpioCtrlRegs.GPDDIR.bit.GPIO115 = 1; // 方向为输出
EDIS;
GpioDataRegs.GPDDAT.bit.GPIO115 = 1; // LED
// 关中断
DINT;
// 初始化Pie控制寄存器
InitPieCtrl();
// 不使能中断,清中断标志
IER = 0x0000;
IFR = 0x0000;
// 初始化中断向量表
InitPieVectTable();
// 全局中断和实时调试中断
// EINT;
ERTM;
// 初始化串口
SCIInit();
while(1)
{
TX_LO = data_out & 0x00FF;
TX_HI = data_out >> 8;
while (SciaRegs.SCIFFTX.bit.TXFFST != 0) {}
SciaRegs.SCITXBUF.all = TX_LO;
while (SciaRegs.SCIFFTX.bit.TXFFST != 0) {}
SciaRegs.SCITXBUF.all = TX_HI;
DELAY_US(100000);
GpioDataRegs.GPDDAT.bit.GPIO115 = 0; // 关闭LED
DELAY_US(100000);
GpioDataRegs.GPDDAT.bit.GPIO115 = 1; // 点亮LED
}
}
void SCIInit(void)
{
// GPIO
EALLOW;
GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 1;
GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 1;
EDIS;
//FIFO
// TX
SciaRegs.SCIFFTX.all=0xE000;
// RX
SciaRegs.SCIFFRX.all=0x2000;
// FIFO TX delay
SciaRegs.SCIFFCT.all=0x0;
// Stop bit, Parity
SciaRegs.SCICCR.all =0x0007;
// disable TX, RX
SciaRegs.SCICTL1.all =0x0003;
// interrupt
SciaRegs.SCICTL2.all =0x0000;
// baud rate
SciaRegs.SCIHBAUD.all =0x0000;
SciaRegs.SCILBAUD.all =0x0035;
// enable TX, RX
SciaRegs.SCICTL1.all =0x0023;
}
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|