关于蓝牙设备利用串口传输被中断的问题
来源:互联网 发布:阿里云企业邮箱 免费 编辑:程序博客网 时间:2024/04/28 17:02
这个问题感觉是被fix了,困扰了一段时间。
首先说说之前存在的问题, 蓝牙在传输文件的时候,无论大小文件,当点击触摸屏,或者有USB detect中断,Wi-Fi寻找AP使能其内部中断,都会出现蓝牙传输被中断(终止传输)的现象。两个同样的设备进行传输时只有接受方才会受到这种影响,而发送方不会!接受方接受失败之后,蓝牙就不再占用串口。利用函数就可以打开给蓝牙用的串口。出现Bluetooth hardware error 10050 (controller not present)。
蓝牙传输硬件用的是CSR BC4 H4的,协议栈是Microsoft Windows CE提供的,传输的时候会利用BSP提供的Serial驱动。平台是SMDK2450的。
看了Samsung的串口驱动,有一段代码没有完全理解:
m_pDTRPort = (volatile ULONG *)&(m_pIOPregs->GPCDAT);
m_pDSRPort = (volatile ULONG *)&(m_pIOPregs->GPCDAT);
m_dwDTRPortNum = 6;
m_dwDSRPortNum = 5;
并且它的串口1上也设置了DTR流控。我觉得他上面的代码写的有问题。但是又不清楚该怎么做,如果有路过的高人,希望能指点一下。
对于这个问题我有三种想法:
1.有可能中断处理机制出了问题,当点击触摸屏等中断时,将UART的中断给屏蔽了。(还真的发现SUB Mask寄存器的值被改,但是后来觉得是串口传输出错之后,自己将自己干掉的!)也怀疑给蓝牙用的串口有缺陷,然后就把蓝牙飞线到不同的串口上,然后又调Debug口,这样才能看到信息。
2.RX FiFo不够大,FiFo有64B,这个没有办法改了,所以我设置了不同的RX触发值,但是发现也没有什么起色。
3.中断优先级的问题,然后就设置中断控制器的优先级,将串口的优先级设置成最高,但是发现这样设置似乎没有起作用。
整天看datasheet和驱动代码,但是发现驱动代码也没有问题,因为三星的驱动也是链接的Microsoft的SERPDDCM和COM_MDD2,并且BSP下的驱动也就是现实SERPDDCM所需要提供的函数。未果。。。郁闷了几天。之所以郁闷主要是因为我连打印信息也不能打,如果放开打印信息的话,蓝牙就不能正常工作,也就是说其他的串口也会影响给蓝牙用的串口。
一边想问题,一边利用强大的搜索引擎,发现一篇外文的文章,和我的想法基本一致,但是这样还是没有用,解决不了问题。http://zone.ni.com/devzone/cda/tut/p/id/4052
然后就想办法放开一些打印信息也不至于蓝牙不能工作,后来发现RX出现Overrun Error,所以就否定了之前其他中断mask掉串口中断的想法。出现这种问题,其实应该是CPU没有及时的处理,将FiFo的数据取走,当有更高优先级的中断到来时,RX的FiFo已经满了。然后串口就自己disable掉自己的中断。对于现在的发现,之前也尝试过调整中断优先级,但是没有取得进展,所以也是一筹莫展,但是无意中,我想调整一下串口的线程优先级是否能解决这个问题呢?由于USB detect中断对UART也有影响,所以根据USB的线程优先级设置了UART的优先级,结果发现问题似乎被我解决了。先暗暗的高兴一把。不过还需要进一步测试!
这应该属于系统调度的问题,之前一直在设置底层寄存器方面下功夫。
现在仅仅是解决了这个问题,但是对蓝牙的理解还很肤浅,这部分东西有时间一定研究研究。
希望路过的高人不吝指教。啰哩叭唆了这么多。。。
- 关于蓝牙设备利用串口传输被中断的问题
- 【解决】关于蓝牙模块串口设置总是错误的问题
- 用中断方式,实现PIC单片机的串口传输
- Android蓝牙串口通信遇到的问题
- E4A - 蓝牙串口连接失败的问题
- 关于c#串口传输
- ucos+s3c2410下的串口中断问题
- 关于VC串口控件MSComm响应中断函数次数不定的问题
- 串口中断相关问题
- 关于蓝牙设计的问题
- 关于蓝牙通信的问题
- 关于Android蓝牙串口通信
- 关于蓝牙串口模块开发
- Android 蓝牙 BR/EDR 的关于串口通信的学习
- 关于线程中断的问题
- 关于S5PV210中断的问题
- ARM串口传输中断的pulse方式与level方式的区别
- MTK 解决蓝牙串口MMI不能收发数据的问题
- 使用SAP标准功能实现复杂ABAP对象在不同系统间的迁移
- JQuery插件开发
- JSF(Java Server Face) 框架中如何获取传统的HttpSession或HttpServletRequest对象
- 使用google地图和创建自己的API密钥
- Windows Mobile上的模拟按键操作
- 关于蓝牙设备利用串口传输被中断的问题
- 期望/概率问题
- The import com.fjnetpower.zzjf.utils.BSPPWSUtil cannot be resolved
- 网通客户端Dr.com V3.72破解浅释
- oralce中获得创建脚本
- 学习Ext之我谈
- 常见监听器说明
- 获得创建表脚本
- 多核设计技术