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 编程, 以上我已调试了多天, 望各位大侠能出手相助
不胜感谢.
我要赚赏金打赏帖 |
|
|---|---|
| PCF8574功能模块及其使用被打赏¥20元 | |
| 传感器LSM6DSO及LIS3MDL的功能检测被打赏¥18元 | |
| LPS25HB气压传感器及其检测被打赏¥18元 | |
| HTS221温湿度传感器及其检测被打赏¥18元 | |
| 【S32K3XX】HSE FW 版本更新被打赏¥21元 | |
| 基于ArduinoUNO开发板的AT24C02读写测试被打赏¥16元 | |
| TCS3472S传感器及其色彩检测被打赏¥19元 | |
| 【S32DS】S32K3 RTD7.0.1 HSE 组件配置报错问题解决被打赏¥27元 | |
| 【S32K3XX】MCME 启动 CORE1被打赏¥23元 | |
| AG32VH407下温度大气压传感器及其检测被打赏¥20元 | |
我要赚赏金
