930电子网

 找回密码
 立即注册
艾克姆科技推出最新产品STC32G12K128开发板
查看: 15665|回复: 2

51822蓝牙透传问题

[复制链接]

1

主题

2

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2018-6-15 11:49:05 | 显示全部楼层 |阅读模式
本帖最后由 tajiaoxuan2007@ 于 2018-6-15 11:50 编辑

应用场景
数据流向示意图
正向:ARM-->51822串口-->51822蓝牙协议栈->手机APP接收
逆向:手机APP发送-->51822蓝牙协议栈-->51822串口-->ARM

正向,每1秒一个小于20字节的数据包
逆向:不时有数据包传输,每个包小于20字节,包间间隔最少100毫秒
出现问题:51822重启
推测:51822透传耐压不够,双工更是无法忍受
提问:针对这种情况,可否给点建议。。

--------------------------------------------------------
另外个问题:本人用demo板做透传耐压测试
得出如下情况:
PC通过串口30毫秒周期循环向51822串口发送20字节的包,51822蓝牙协议栈再转发给手机APP,这个没问题,把周期由30毫秒调整到10毫秒,51822会重启。当然这种情况,本人在程序里面是可以做容错处理的。
手机APP 80毫秒周期性的给51822发送数据(包小于20字节)再通过串口打印出来。这个也没问题。但是当包大于20字节的时候,51822就重启了,本人看了程序,就仅能看到个nus_data_handle,这个就没法做容错处理了。估计是蓝牙协议栈回调这个函数。。
提问:针对手机APP发包大于20字节情况下,有没有办法做容错处理呢?

以上两种情况都是单工情况
若板子->安卓 周期 30毫秒, 安卓->板子周期 80毫秒, 传输数据包小于20,则很快重启。。对于这个,有什么建议呢??
-----------------------------------------------------
当然也电话过技术支持,说用debug在线仿真调试。。。
这如何操作???仿真调试难道还能接收外部传来的数据?

回复

使用道具 举报

52

主题

339

帖子

6487

积分

版主

Rank: 7Rank: 7Rank: 7

积分
6487
发表于 2018-6-15 17:42:18 | 显示全部楼层
出现重启,首先要跟踪错误代码,在MDK全局宏定义里面加上“DEBUG”,打开logs,运行程序。这样当出现重启时,系统会打印出错误代码并进入死循环。通过错误代码的提示,再找问题。
另外,单向间隔不要小于20ms,不然数据处理不过来。
回复 支持 反对

使用道具 举报

1

主题

2

帖子

19

积分

新手上路

Rank: 1

积分
19
 楼主| 发表于 2018-6-16 08:31:54 | 显示全部楼层
你说的应该是sdk_config.h吧。。那里面的宏太多了,着实不好操作。所以本人也没去操作那个,
基本就是自己跟踪程序运行
本人发现就是死在了那个uart fifo里面,就是蓝牙事件函数 nus_data_handle里面,蓝牙接受到的数据往串口抛送,数据入fifo的时候。。调用fifo_put 的时候挂掉。。。当然仅仅蓝牙接受数据往串口抛送,然后周期100ms这样也不会挂。如果同时有一个周期100ms数据包由串口往蓝牙抛送任务的话。板子很快就重启了。。所以本人目前得出结论就是app_uart_fifo底层驱动不够健壮,放假完了,还得去解决这个事情。
其实老板,你自己也可以搭建这个环境试试,15822 S130那块demo板子。。。 串口透传实验,你在PC上用串口助手100ms循环发送数据给板子(当然板子会通过蓝牙协议栈传递数据给安卓APP),然后这个期间,你不停的用安卓APP给板子发送数据,你就会发现,发送频率越高,板子重启的概率就越大。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|官方淘宝店|930电子网 ( 皖ICP备16000695号-2 )

GMT+8, 2024-5-7 09:33 , Processed in 0.064835 second(s), 21 queries .

快速回复 返回顶部 返回列表