DA14681外设I2C和PXP工程同时工作时导致DA14681死机的问题

14个职位/ 0个新职位
最后发表
index219
离线
最后看到:1年8个月前
加入:2016-05-23 07:00
DA14681外设I2C和PXP工程同时工作时导致DA14681死机的问题

请问:
我的使用情况:
硬件:测试io (p3_5)外接领导,外挂eepm芯片到i2c2 (p4_0 p4_1)
软件:
1 .配置uart作为调试使用
2.官方pxp_reporter工程,pxp任务正常打开,同时新建一个1周期测试任务,执行io翻转,代码正常运行。
3 .官方pxp_reporter工程,屏蔽掉pxp任务,同时在测试任务下新增初始化i2c2,写eepm地址0 x00,数据:0 x51周期读取地址0 x00,数据等于0 x51代码正常运行。
#如果0
/*启动PXP报告程序任务。*/
OS_TASK_CREATE("PXP Reporter", /*分配给任务的文本名称,for
调试;不被内核使用。*/
pxp_reporter_task, /*实现任务的函数。*/
NULL, /*传递给任务的参数。*/
#if (dg_configDISABLE_BACKGROUND_FLASH_OPS == 1) / /输出
512, /*分配给对象的字节数
任务堆栈。*/
其他#
768, /*分配给对象的字节数
任务堆栈。*/
# endif
mainPXP_REPORTER_TASK_PRIORITY, /*任务的优先级。*/
处理);/*任务句柄。*/
OS_ASSERT(处理);
# endif

问题:当我在恢复pxp任务,同时周期读取i2c2的地址0 x00数据时,每次都只能随机的读取几次,之后da14681出现死机情况。
注:
1 .判断死机的依据是:led灯不能正产翻转点亮,串口无循环数据打印
2. eepm的驱动是参考sdk包下peripherals_demo工程中的demo_i2c.c

请官方和使用da14681的解决下,非常感谢!

设备:
kingwheat
离线
最后看到:1年2个月前
加入:2016-12-08 09:21
你是用的是IIC的异步方式吗?是不是有IIC读写回调的那种

你是用的是IIC的异步方式吗?是不是有IIC读写回调的那种吗?

index219
离线
最后看到:1年8个月前
加入:2016-05-23 07:00
不是,我用的同步方式。你用异步回调可以不冲突么?

不是,我用的同步方式。你用异步回调可以不冲突么?

kingwheat
离线
最后看到:1年2个月前
加入:2016-12-08 09:21
你看一下,你有没有在IIC的操作里面,调用了操作系统

你看一下,你有没有在IIC的操作里面,调用了OS_EVENT_WAIT (dev_config - > bus_data - >事件,OS_EVENT_FOREVER);
不知道你具体是怎么配置的。但是我之前试过,偶尔会因为这个的回调没有,导致永久阻塞。

Jelphi
离线
最后看到:8个月2个星期前
工作人员
加入:2015-09-10 12:07
i2c的使用要调SDK i2c用对话框

i2c的使用要调用对话框SDK i2c适配器,外围示例项目有这样的样本

index219
离线
最后看到:1年8个月前
加入:2016-05-23 07:00
3 q,使用适配器对应的i2c访问外设时,问题解决。

3 q,使用适配器对应的i2c访问外设时,问题解决。

index219
离线
最后看到:1年8个月前
加入:2016-05-23 07:00
嗨Jelphi,

嗨Jelphi,
再请问一个i2c的问题,我使用广告函数读写at24c32,每次上电使用freertos的软件定时器周期触发读写,
但是第一次读写总是不成功,但是之后定时器触发同样的读写操作都成功了。

请问这是什么问题?
同样的我在system_init()初始化读写at24c32也不成功,但是再任务中周期调用at24c32_test ();是操作成功的。
/*初始化BLE适配器*/
ad_ble_init ();
/*初始化BLE管理器*/
ble_mgr_init ();
/ /读写at24c32
at24c32_test ();/******************读写失败********************/
/*启动PXP报告程序任务。*/
OS_TASK_CREATE("PXP Reporter", ... ... . txt ")执行操作
非常期待回复!

index219
离线
最后看到:1年8个月前
加入:2016-05-23 07:00
请问下这个问题如何解决?

请问下这个问题如何解决?
同样的函数at24c32_test()在任务中周期调用都可以成功操作,但是在初始化的时候就无法成功读写。

index219
离线
最后看到:1年8个月前
加入:2016-05-23 07:00
有技术支持,支持下么?

有技术支持,支持下么?

gwjgwgshxd
离线
最后看到:3年4个月前
加入:2016-12-14 52
会不会是I2C还没有初始化完成嘞?

会不会是I2C还没有初始化完成嘞?

index219
离线
最后看到:1年8个月前
加入:2016-05-23 07:00
我的测试代码,是在i2c相关的初始化代码后面的

我的测试代码,是在i2c相关的初始化代码后面的,其他有遇到类似情况的人么?希望得到技术支持。

index219
离线
最后看到:1年8个月前
加入:2016-05-23 07:00
没人遇到类似的问题么,求指导。

没人遇到类似的问题么,求指导。

gwjgwgshxd
离线
最后看到:3年4个月前
加入:2016-12-14 52
我现在也遇到了这样的问题,正常运行几次就死机了

我现在也遇到了这样的问题,正常运行几次就死机了。我还是用的手册上给的例子。
I2C_dev = ad_i2c_open (M41T62);
ad_i2c_transact (I2C_dev TX 1 RX 7);
ad_i2c_close (I2C_dev);
而且我发现经常不知道什么原因就死机了,不知道你们有没有遇到类似问题。

index219
离线
最后看到:1年8个月前
加入:2016-05-23 07:00
你改用异步写操作就可以了,可以参考官方演示

你改用异步写操作就可以了,可以参考官方演示:eeprom_24XX256_read.c . h