DSP从I2C推送数据

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
9个帖子/ 0新
最后一篇
Ahiggs.
离线
最后一次露面:10个月1周前
加入:2019-12-17 07:10
DSP从I2C推送数据

你好,

我目前在DA14585开发套件上运行DSPS_DEVICE示例,并尝试将其自己的数据推向缓冲区以发送到主机。对于主机,我可以使用DSPS Android应用程序与我的手机连接到14585,并能够将数据发送到14585,但未收到它。

我试图使用user_ble_push()函数和计时器将数据推向缓冲区。该函数每5秒运行每5秒,测试数据显示在设备的COM端口上,但不在我手机DSP应用程序上的收到数据中。

我对代码进行的唯一更改是将Flow_Control_config定义为1(在user_periph_setup.h中)以及向user_sps_scheduler.cn(下面的代码)添加我的函数。

我不是正确地将数据推到缓冲区吗?

谢谢!

void test_function(){uint8_t msgs [] =“test_fn_buf_push \ r \ n”;user_ble_push(msgs,sizeof(msgs));//重新启动计时器计时器= app_easy_timer(timer_delay,test_function); // timer_delay 500}

设备:
PM_DIALOG.
离线
最后一次露面:3天14小时前
职员
加入:2018-02-08 11:03
嗨ahiggs,

嗨ahiggs,

在您的论坛线程的一点点中,您提到您希望从I2C推送数据。那是对的吗?DSP模拟串行电缆通信并将数据推送到UART。Flow_Control_config将UART流控制设置为软件流控制(XON / XOF)或硬件流量控制(RTS / CTS)。在扩展睡眠模式配置的情况下,需要硬件流控制才能唤醒设备。DSP永远不会永久无效地睡着,醒来才能为BLE事件服务,即使没有任何数据发送DA将唤醒以保持与主机的连接。当设备醒来时,它会将RTS线切换到低,以指示他准备好(设备将在每个连接间隔或广告间隔中唤醒RTS低电平。另请注意,当设备接收时,当传输的数据到达内部FIFO阈值时,RTS将返回高电平,以通知它应该停止发送数据的另一侧。当在BLE接口中有可用数据时,User_sps_server_data_rx_ind_handler()在外围模式下调用user_ble_push()函数。它将数据推在BLE_TO_PERIPH_BUFFER循环缓冲器中,并检查缓冲级别是否超过高水印以向对等设备发送流关闭信号。 Please refer to theUM-B-088:对话框串行端口配置文件的用户手册(DA14585)了解更多信息。

谢谢,PM_DIALOG.

Ahiggs.
离线
最后一次露面:10个月1周前
加入:2019-12-17 07:10
感谢你的回复。

感谢你的回复。

我们的项目目前设置的方式有一个关于传感器的Agyiny,并将数据发送到DA上的UART,通过蓝牙发送到DSPS_Central设备以登录计算机。

我想消除主题并让外围DA读取I2C传感器(已经在不同的项目中完成),然后通过蓝牙将数据发送到中央。因此,我尝试使用上面给出的test_function()将测试数据推入Periph_to_ble缓冲区。

PM_DIALOG.
离线
最后一次露面:3天14小时前
职员
加入:2018-02-08 11:03
嗨ahiggs,

嗨ahiggs,

user_ble_push()函数正在寻找一个指针和长度。这将通过数据传递给FIFO缓冲区并通过BLE发送数据。请在调试模式下运行它,并将一个断点添加到user_ble_push()中?您是否在DSP设备项目中完成了任何其他修改?请分享它们,我会尝试复制它。

谢谢,PM_DIALOG.

Ahiggs.
离线
最后一次露面:10个月1周前
加入:2019-12-17 07:10
我放了一个断点

我在user_ble_push函数上放置了一个断点,并验证了它是否达到。从我从数据表中了解的情况下,如果按下数据以启动BLE传输,也需要运行user_ble_pull功能。我已将新代码包含在下面的test_function

我所做的唯一修改是user_scheduler_init()中的test_function()和关联的计时器,以及在user_periph_setup.h中更改为sw flow control

谢谢你的帮助,我明天会有时间(在〜16小时)继续工作

void test_function(){user_ble_push(msgs,sizeof(msgs));user_ble_pull(true,null);timer = app_easy_timer(timer_delay,test_function);}

PM_DIALOG.
离线
最后一次露面:3天14小时前
职员
加入:2018-02-08 11:03
嗨ahiggs,

嗨ahiggs,

感谢分享代码。我会尝试在我身边复制。

谢谢,PM_DIALOG.

PM_DIALOG.
离线
最后一次露面:3天14小时前
职员
加入:2018-02-08 11:03
嗨ahiggs,

嗨ahiggs,

很抱歉,我答复晚了。您提到您使用的是SW流量控制。我可以问您是否在DSP固件中使用扩展睡眠模式配置?如果是,则应使用HW Flow Control或删除睡眠配置。

谢谢,PM_DIALOG.

Ahiggs.
离线
最后一次露面:10个月1周前
加入:2019-12-17 07:10
延迟没问题。一世

延迟没问题。我最终通过使用user_send_ble_data()命令查找替代方法。

我正在使用SW流量控制。在''user_config.h'下我有app_default_sleep_mode.设置ARCH_EXT_SLEEP_ON.,但你建议将其设置为Arch_sleep_off.

我显然没有烧毁OTP,而是最终的申请将要有OTP烧焦。

编辑:

我刚刚尝试改变睡眠设置,但函数user_ble_push()函数仍未导致任何要发送到DSP应用程序的东西。

PM_DIALOG.
离线
最后一次露面:3天14小时前
职员
加入:2018-02-08 11:03
嗨ahiggs,

嗨ahiggs,

如果延长睡眠模式配置(app_default_sleep_mode = Arch_ext_sleep_on),则需要硬件流控制才能唤醒设备。DSP永远不会永久无效地睡着,醒来才能为BLE事件服务,即使没有任何数据发送DA将唤醒以保持与主机的连接。当设备醒来时,它会将RTS线切换到低,以指示他准备好(设备将在每个连接间隔或广告间隔中唤醒RTS低电平。另请注意,当设备接收时,当传输的数据到达内部FIFO阈值时,RTS将返回高电平,以通知它应该停止发送数据的另一侧。根据用户手册,注2页第7页,在扩展睡眠模式下部分支持软件流量控制。只能通过DA14580设备控制即可串行数据。在睡眠时间内将忽略任何传入的XON / XOFF。相反,在活动模式下完全支持软件流控制。在流关信号(0x19)的接收时,DA14580可以通过DA14580发送高达16个字节的量直到传输停止。不确定您的设置发生了什么,但我的建议是在睡眠模式下使用HW流量控制。

谢谢,PM_DIALOG.