DSP28377d使用SCI通信 RXBUF中无法存入数据

瓶邪!· 2020-07-29 04:18:08


配置如下

/*
* sci.c
*
* Created on: 2020年7月25日
* Author: 25446
*/


#include "RS485.h"

//interrupt void ScibInterrupt();
void RS485_Init(Uint16 baud)
{


EALLOW;
CpuSysRegs.PCLKCR7.bit.SCI_B=1; //使能GPIO时钟
EDIS;

//GPIO 初始化
EALLOW;

GpioCtrlRegs.GPAPUD.bit.GPIO18=0; //开启上拉模式
GpioCtrlRegs.GPAPUD.bit.GPIO19=0; //开启上拉模式
GpioCtrlRegs.GPADIR.bit.GPIO19=0; //RX设置为输入
GpioCtrlRegs.GPADIR.bit.GPIO18=1; //TX设置为输出
GpioCtrlRegs.GPAGMUX2.bit.GPIO18=0;
GpioCtrlRegs.GPAGMUX2.bit.GPIO19=0;
GpioCtrlRegs.GPAMUX2.bit.GPIO18=2;//复用为 SCIB 的输出
GpioCtrlRegs.GPAMUX2.bit.GPIO19=2;//复用为 SCIB 的输入
EDIS;


//GPIO初始化
EALLOW;
GpioCtrlRegs.GPBMUX2.bit.GPIO57=0;
GpioCtrlRegs.GPBDIR.bit.GPIO57=1;
GpioCtrlRegs.GPBPUD.bit.GPIO57=0;
GpioDataRegs.GPBSET.bit.GPIO57=1;
EDIS;

EALLOW;
//数据格式配置
ScibRegs.SCICCR.all=0x0007; //一位停止位 无奇偶校验 8位数据 无地址



//中断设置
ScibRegs.SCICTL1.all =0x0003; //SCI发送接收使能 唤醒SCI

ScibRegs.SCICTL2.all=0x0003; //使能rx中断
ScibRegs.SCICTL2.bit.TXINTENA =1; //禁止发送中断
ScibRegs.SCICTL2.bit.RXBKINTENA =1; //使能接收中断
ScibRegs.SCICTL1.all =0x0023; //SCI发送接收使能 唤醒SCI

//配置波特率
ScibRegs.SCIHBAUD.all=0x0000;
ScibRegs.SCILBAUD.all=0x0035; //设置波特率为9600

SciaRegs.SCIFFTX.all=0xE040;
SciaRegs.SCIFFRX.all=0x2044;
SciaRegs.SCIFFCT.all=0x0;


EDIS;




}


void RS485_SendByte(int data) //发送单个
{

//while(ScibRegs.SCICTL2.bit.TXRDY!=1);
while(ScibRegs.SCIFFTX.bit.TXFFST!=0);
ScibRegs.SCITXBUF.all=data; //0-7位数据

}

void RS485_SendString(char * msg) //发送字符串
{
int i;
i = 0;
while(msg[i] != '\0')
{
RS485_SendByte(msg[i]);
i++;
}
}
...全文
797 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
瓶邪!· 2020-07-29
  • 打赏
  • 举报
回复
pc端一直在发送数据

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧