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 编程, 以上我已调试了多天, 望各位大侠能出手相助
不胜感谢.
我要赚赏金打赏帖 |
|
|---|---|
| 28BYJ-48机械臂实现人脸跟随被打赏¥24元 | |
| 基于RK3506B的片温识读功能的实现被打赏¥25元 | |
| 【瑞萨RA8D1测评】基于FreeRTOS的lvgl移植教程被打赏¥29元 | |
| 电子价签墨水屏开发被打赏¥35元 | |
| 【Ozone】RTT 打印终端使用被打赏¥29元 | |
| BMS保护板绝缘检测功能-不平衡电桥技术绝缘电阻检测设计与实现被打赏¥34元 | |
| 给28BYJ-48三自由度机械臂加一个网页控制台被打赏¥32元 | |
| 用28BYJ-48电机从零搭一台三自由度机械臂被打赏¥33元 | |
| 【英飞凌开发经验】ModusToolbox配置EdgeTalk外设被打赏¥27元 | |
| 基于BQ76952PFBR的BMS保护板热插拔损坏的原因和处理措施被打赏¥32元 | |
我要赚赏金
