tms320c206 与 pc机串口通讯问题
一下是我用 C 写的 DSP 函数
//功能:DSP 从串口读数据
//参数:buff 为数据缓冲
// buff_len 为数据缓冲长度
// nMaxOutTime 为最大读取时间(单位毫秒)
//返回值: 已接受数据的长度
int read_comm( char *buff, unsigned buff_len, unsigned nMaxOutTime )
{
const unsigned nDR =0x0100 ;
unsigned cntBuff ;
float currPassTime ; //发送字符串已经过的总时间
currPassTime =0.0 ;
cntBuff =0;
while (currPassTime < nMaxOutTime)
{
if ( IOSR & nDR == nDR ) //有数据
{
buff[cntBuff++] = ADTR & 0xFF ;
if (cntBuff >= buff_len) break ;
}
delay(0.1 ms) ; //延时0.1 ms
currPassTime += 0.1 ;
}
return cntBuff ;
}
//功能:DSP 向串口写数据
//参数:buff 为数据缓冲
// buff_len 为数据缓冲长度
//返回值:发送是否成功 1- 成功 ;0- 失败
int write_comm(char *buff ,unsigned buff_len)
{
const unsigned nTHRE =0x0800 ;
const float nMaxCharTime =2.0 ; //发送两个字符间的最大间隔时间 ms
unsigned n ;
float curDelay ;
for(n=0; n< buff_len; n++)
{
ADTR = buff[n] & 0x00FF ;
curDelay =0.0 ;
while ( curDelay <= nMaxCharTime )
{
delay(0.1ms) ; //延时0.1ms
curDelay += 0.1 ;
if (IOSR & nTHRE == nTHRE) //已发送
break ;
}
if ( curDelay> nMaxCharTime ) return 0;
}
return 1;
}
-----------------------------------------------------------
我得问题是:
1. read_comm 函数读取字符时总是掉字符
2. write_comm 函数 必须去掉 if (IOSR & nTHRE == nTHRE) 才正常
我是初学DSP 编程, 以上我已调试了多天, 望各位大侠能出手相助
不胜感谢.
我要赚赏金打赏帖 |
|
|---|---|
| 【S32DS】S32K3 RTD7.0.1 HSE 组件配置报错问题解决被打赏¥27元 | |
| 【S32K3XX】MCME 启动 CORE1被打赏¥23元 | |
| AG32VH407下温度大气压传感器及其检测被打赏¥20元 | |
| AG32VH407下光照强度传感器BH1750及其检测被打赏¥22元 | |
| AT32VH407下使用温湿度传感器DHT22进行检测被打赏¥20元 | |
| DIY一个婴儿澡盆温度计被打赏¥34元 | |
| 【FreeRtos】FreeRtos+MPU region 配置规则被打赏¥23元 | |
| 【分享开发笔记,赚取电动螺丝刀】三分钟快速上手驱动墨水屏(ArduinoIDE)被打赏¥28元 | |
| 【S32K3XX】LIN 通讯模块使用被打赏¥31元 | |
| 【FreeRtos】FreeRtos + MPU模块的配置使用被打赏¥32元 | |
我要赚赏金
