sci模块和计算机通信,有关2812 SCI模块通信的问题

这篇博客讨论了在DSP28系列微控制器中,如何通过SciaRx_Ready和SciaTx_Ready函数正确判断SCI串口接收和发送缓冲区的状态,以及如何使用这些状态来控制数据传输。作者分享了代码示例,并请求帮助检查可能存在的问题,以实现ADC数据的发送和接收功能。
摘要由CSDN通过智能技术生成

本帖最后由 raoxianbin 于 2013-10-19 14:07 编辑

pinda_ 发表于 2013-10-19 12:21 icview-629634-1-1.html?_dsign=f72bd84c

不太看的懂你的描述。

我想你的意思应该是RXRDY与SCIRXBUF之间的关系怎么样……

en   很感谢你一直为我解答

下面是我的一段查询模式的代码

麻烦您帮我看看有什么不对的地方吗?

我没实现相应的功能

谢谢!

#include   "DSP28_Device.h"

#include    "DSP28_Globalprototypes.h"

unsigned int N=8;

float  adc[16];//用于存储ADC的转换结果

float  adcl0;

unsigned  int Sci_varRx[100];

unsigned int i;

unsigned int Send_Flag;

unsigned int j;

int SciaRx_Ready(void);

int SciaTx_Ready(void);

void  delay (void);

void main(void)

{

InitSysCtrl();

DINT;

IER=0x0000;

IFR=0x0000;

InitPieCtrl();

InitPieVectTable();    //初始化PIE模块中的CPU定时器0的中断

InitSci();

InitGpio();

for(j=0;j<100;j++)

{

Sci_varRx[j]=0;

}

j=0;

Send_Flag=0;

while(1)

{

if((SciaTx_Ready()==1)&&(Send_Flag==1))

{

while(j

{

if(SciaRegs.SCICTL2.bit.TXRDY==1)

{

SciaRegs.SCITXBUF=Sci_varRx[j];

j++;

}

}

Send_Flag=0;

j=0;

}

if(SciaRx_Ready()==1)

{

Sci_varRx[j]=SciaRegs.SCIRXBUF.all;

j++;

if(j==N)

{

j=0;

Send_Flag=1;

}

}

}

}

void delay (void)

{

short i;

for(i=0;i<10000;i++)

{}

}

int SciaTx_Ready(void)

{

unsigned  int i;

if(SciaRegs.SCICTL2.bit.TXRDY==1)

{

i=1;

}

else

{

i=0;

}

return(i);

}

int SciaRx_Ready(void)

{

unsigned int i;

if(SciaRegs.SCIRXST.bit.RXRDY==1)

{

i=1;

}

else

{

i=0;

}

return(i);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值