DSP v5.150.2设备断开后

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
8个帖子/ 0新
最后一篇
roinovi.
离线
最后一次露面:3年9个月前
加入:2015-11-04 18:11
DSP v5.150.2设备断开后

你好
我正在使用DA14580来通过UART从我的自定义板转移到手机上的应用程序
为了测试我在iPhone上使用DSPS应用程序的设备:

客户端(MCU)<=> DA14580(设备)<=> BLE --------- BLE <=> DSPS应用在iPhone(主机)上运行

当我试图在DA14580设备上运行v 3.150.2时,它可以正常工作 - >我看到了iPhone上运行的应用程序(DSP)上的数据
但是,当我在DA14580设备上使用V 5.150.2时,当MCU开始通过UART发送数据时,设备才会从应用程序断开连接
如附有的照片中所见。
如果MCU不通过UART发送数据,则只有当数据传输开始时,设备将连接到应用程序(主机),仅在第二个时断开连接
它可以是一个缓冲问题还是这样的东西?

设备:
mt_dialog.
离线
最后一次露面:2个月2周前
职员
加入:2015-06-08 11:34
roinovi,

roinovi,

我在使用DSP运行时没有遇到这样的问题,事实上,当设备开始发送数据时可能会导致缓冲区的溢出,但如果使用流量控制功能,则不应发生。检查在通过UART和580断开连接的情况下,检查580究竟发生的情况究竟发生了什么,设备是否重置?

谢谢mt_dialog.

roinovi.
离线
最后一次露面:3年9个月前
加入:2015-11-04 18:11
这是一个缓冲问题。

这是一个缓冲问题。
现在它的工作正常,除了广告阶段的含义:
如果在广告阶段期间的外部MCUSENDS数据,而不是在1秒后的广告下降。
但是如果MCU在此阶段期间发送数据(我物理地断开引脚),那么DA14580就能连接到DSPS应用程序,并且在配对之后将TX引脚(物理地)从MCU重新连接到DA14580并我看到DSPS应用程序上的数据。

我的问题是:我想设置非活动(GPIO_SETINACTION(0,7))TX引脚在设备的初始化上,并且在配对阶段设置引脚活动(GPIO_SETIVITIVE(0,7))

在代码中我需要插入这2个命令?

mt_dialog.
离线
最后一次露面:2个月2周前
职员
加入:2015-06-08 11:34
roinovi,

roinovi,

我不确定我理解这个问题,因为您将端口/引脚0_7作为TX引脚,您不会使用它作为GPIO集和UN-Set使用GPIO_SetActive()命令,您可以做的是重新配置引脚作为普通GPIO(PID_GPIO)并设置您想要的引脚的状态。现在,您可以在设置PIN的位置,提到您希望在初始化设备时,可以将重新配置放在.app_on_init回调中,并且在配对阶段结束时触发.app_on_pairing_succeded。

谢谢mt_dialog.

roinovi.
离线
最后一次露面:3年9个月前
加入:2015-11-04 18:11
你好

你好
我已将UART RX引脚重新配置为PID_GPIO,并将其设置为活动状态,但我无法看到流过UART引脚的数据(以及DSPS应用程序上的任何内容)

void set_pad_functions(void)//设置GPIO端口功能模式
{

/ *
*配置应用程序端口。
IE。
gpio_configurepin(gpio_port_0,gpio_pin_1,输出,pid_gpio,false);//将P_01设置为通用输出
* /
gpio_configurepin(gpio_uart1_tx_port,gpio_uart1_tx_pin,输出,pid_uart1_tx,false);
gpio_configurepin(gpio_uart1_rx_port,gpio_uart1_rx_pin,input_pullup,pid_gpio / * pid_uart1_rx * /,true);

我需要重新配置的代码中是否有另一个位置?

关于UART引脚处于活动状态时的初始通告问题(以及数据流入)
在Debug会话中,我看到代码粘在断言警告中:

静态void user_periph_push(uint8_t ** wrdata,uint16_t write_amount)
{
bool send_flow_off = false;

//将项目写入缓冲区
user_buffer_cfm_write(&periph_to_ble_buffer,write_amount);
if(user_buffer_write_check(&periph_to_ble_buffer,wrdata,rx_callback_size)!= rx_callback_size)
{
assert_warning(0);
}

有没有办法(除了设置UART RX引脚无效)以修复此项吗?

mt_dialog.
离线
最后一次露面:2个月2周前
职员
加入:2015-06-08 11:34
roinovi,

roinovi,

来自引脚的RX功能停止,如果外部设备保持发送,则仍将看到RX线路上的数据,但这并不意味着它们进入580的UART线路,580的RX线仍然被驱动通过外部MCU的Tx,但不会有UART接收数据的中断,因此不应调用user_periph_push()才能导致错误。尽管PIN的重新配置,但是如果您在此时收到错误,那么这意味着显然,环形缓冲区中的可用空间是不够的,您将必须检查设置上发生的原因,因为这不应该发生普通手术。

谢谢mt_dialog.

roinovi.
离线
最后一次露面:3年9个月前
加入:2015-11-04 18:11
只是为了澄清

只是为了澄清
当我配置PID_UART1_RX时,assert_warning(0)会发生(然后代码卡在该行上)

当我配置PID_GPIO时,代码不会被卡住,但我无法看到DSP上的数据(因为正如您所说的,因此没有UART中断动力)

1)配置PID_UART1_RX时如何修复ASSERT_WARNING(0)?
它发生的是因为当UART数据通过但没有出来时,环形缓冲区已满,因为没有BLE连接左转?
2)如果我配置PID_GPIO,则需要完成哪些(以及在哪里)才能调用UART RX中断?

mt_dialog.
离线
最后一次露面:2个月2周前
职员
加入:2015-06-08 11:34
roinovi,

roinovi,

您已提到的Assert_Warning(0)确实发生在Periph_to_ble_buffer中没有可用的空间,如果使用,则在DSPS项目中,不应发生。因此,如果您正在获得此警告,这意味着您不使用流量控制,因为在DSP中,如果缓冲区达到高水位级别(RX_BUFFER_HWM),它会向外部设备发出流量,因此您可以不使用流量控制或外部MCU继续将数据发送到580,而流关闭。因此,您正在将缓冲区的底线与缓冲区的Ammount的数据泛增泛增缓冲区,并且您从不免费缓冲区位置。没有解决方法,您必须尊重流量控制或根据您的要求自定义代码。

关于PID_GPIO的配置,您正在更改引脚的功能性的事实将不允许您为UART获取中断,因为内部引脚不再连接到580的UART模块。

谢谢mt_dialog.