mqx操作系统之sci通信的问题
作者:网络转载 发布时间:[ 2012/11/28 10:50:32 ] 推荐标签:
由于项目中用到了mcu的sci通信,而mqx又恰恰内部集成了相关模块的驱动,那么对我编写相关模块的难度可降低很多了,但是系统级编程的要求无疑提高了很多,有得有失嘛!
在调试sci的时候,遇到了2个问题,跟大家分享一下:
1、每次系统在初始化的时候,串口会自动发送2-3个字节的0x00数据,给其他相关模块造成干扰。
2、每次sci输出之后,系统会自动添加2-3个字节的数据0x00.比如我发送了32个字节,可他收到的是33个字节。
经过分析发现,原因如下:
1、系统在初始化时,由于要对bsp进行初始化,串口当然也在其中,那么数据引脚也当然需要由不定状态,转换为确定状态。这出现了错觉,以为发送了0x00的数据。
该原因是我一个经验丰富的同事,曾遇到的问题,他跟我说以前,他们组因为这个问题搞了2个星期,没想到是系统本身的特性。呵呵,还好这个理由我接受。
2、这个问题跟我的代码有关了。由于我深受linux代码影响,起初在设计发送任务时,每次接受到数据,打开sci,当发送完毕后在关闭sci,每次发送数据都是这样。起初个人以为,当你的任务不用端口时,要记得关闭,省得对别人造成干扰。但是这出现了第2个问题了。接收端会受到一些无用的数据。
后来,我改成了sci发送任务,打开sci端口后,不再关闭,死循环阻塞等待消息到来,当有消息时,发送没有阻塞。不再频繁开关sci端口。这才没有了第二个问题。
但是心中对mqx的sci内部驱动,有些许不爽。我关闭sci端口怎么会出现无用数据呢?姑且认为是mqx的一个小bug吧,你系统初始化时,接收到了无用数据,我认了,可以理解毕竟系统都还没起来呢。可是,在使用过程中,出现了这样的问题,有点不应该了。呵呵
附上部分源代码:(有什么需要改进的地方,大家不要客气啊)
/* open a message queue */
sci1_qid = _msgq_open(QNUM_SCI1_SEND_TASK, 0);
if(sci1_qid == 0)
{
// printf("
Could not open the server message queue
");
_mqx_exit(0);
}
//open the sci1 channel
sci1_dev = fopen(BASEBOARD_HEATBOARD_CHANNEL, NULL);
if(sci1_dev == NULL)
{
/* device could not be opened */
_task_block();
}
while (TRUE)
{
/* receive the message with block mode */
msg_ptr = _msgq_receive(sci1_qid, 0);
if (msg_ptr == NULL)
{
//printf("
Could not receive a message
");
_mqx_exit(0);
}
/* write data to sci1 */
write(sci1_dev, (&(msg_ptr->DATA)), (msg_ptr->BYTE_NUM));
/* empty queue - not needed for polled mode */
fflush(sci1_dev);
/* wait for transfer complete flag */
/* after experiment,the mqx3.70 doesn't support this ioctl command ,so remove this sentence */
/*
result = ioctl(sci1_dev, IO_IOCTL_SERIAL_WAIT_FOR_TC, NULL );
if(result == IO_ERROR_INVALID_IOCTL_CMD)
{
// ioctl not supported, use newer MQX version
printf("block sci send
");
_task_block();
} */
_msg_free(msg_ptr); //just for the test.mabe it is error.
}
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11