关于UART的更多问题

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.xmece.com/support.我们将在未来几天修复bug /优化搜索和标记。
3个帖子/ 0个新
最后发表
Max44
离线
最后一次露面:10个月2周之前
加入:2016-02-08等等
关于UART的更多问题

你好,对话框,

我还试图通过UART建立与外部MCU的通信。我试图将其集成到一个基于运行在DA14580上的ble_app_peripheral示例的定制服务中。我使用一个基本的DK进行开发和调试。串行数据速率设置为115200波特,我没有使用流量控制。我使用P0_4作为Tx引脚和P0_5作为Rx引脚。我在Rx针上加了一个上拉。波形看起来OK监测在一个范围。我也能够运行SDK uart2_async示例,所以我知道UART和DK工作。

正如其他人最近报道的那样,我能够将数据从DA发送到MCU而没有任何问题。到目前为止,我无法接收数据从MCU传输到DA使用uart_read函数。最初我尝试一个10字节的小数据包。我似乎得到一个uart2_rec_data_avail_isr,但我没有看到我正在传输的数据出现在接收缓冲区中。

我最初有几个问题:

我应该把初始的uart2_read设置放在ble_app_peripheral代码的哪里?我在peripheral_init()末尾的user_peripheral_setup.c中尝试了它。

我的接收缓冲区是否可以超过16个字节?从之前的文章来看,硬件FIFO可能会限制你在16字节或更少。外部MCU需要以16字节或更少的块传输吗?

如果我曾经到了UART2_READ_COMPLETION_CB,我可以在那里放另一个uart2_read来查找来自MCU的另一个输入吗?其他帖子似乎意味着这不起作用,下一个读取应该在回调例程之外。

谢谢你,马克斯

设备:
mt_dialog.
离线
最后一次露面:三个月两个星期前
工作人员
加入:2015-06-08 34
嗨Max44,

嗨Max44,

1)在哪里可以放置UART2_READ()以期望来自UART的数据取决于您的应用程序,例如在初始化UART之后,请在Periph_init()函数中放置UART2_READ()函数的UART2_READ()函数(i假设这是您还放置了代码的地方)。因此,只需添加此UART2_READ((UINT8_T *)缓冲区,READ_CHAR_COUNT,UART2_READ_COMPLETION_CB);一旦我在我的缓冲区中拥有可用的字节编号,我就可以获得UART2_READ_COMPLETION_CB()。

2)关于你的接收缓冲区的大小,是的,你可以有一个比实际的硬件UART缓冲区更大的应用程序缓冲区,你可以从hw FIFO读取数据,并把它们放在你的应用程序缓冲区,当然,您应该注意写和读索引,以便知道应用程序处理哪些数据,以及应该处理哪些数据。关于外部单片机发送的数据量,你必须确保580年接收的数据读取您的应用程序,如果外部单片机发送数据和应用程序没有阅读从UART fifo然后剩下的fifo数据将被覆盖。h/w fifo具有功能,以便通知应用程序关于fifo中可用的数据量,也实现了一个自动流量控制方案,以通知外部MCU流掉。

3)是的,你可以放置一个额外的UART读取在完成回调中,以启动一个新的读取事务,这正是DSPS应用程序所做的,uart_rx_callback()是回调函数,将触发当设备获得所需的数据量,当该函数被触发时,使用uart_sps_read()(与uart2_read()函数等价)从该回调函数启动一个新事务。

关于UART的使用,请注意,当设备处于睡眠状态时,包括UART在内的所有外设都将关闭,因此当设备处于睡眠状态时不会有任何接收。可以帮助您在580上使用UART的一些示例是DSPS项目和无代码演示。

谢谢mt_dialog.

Max44
离线
最后一次露面:10个月2周之前
加入:2016-02-08等等
公吨,

公吨,

感谢您验证了UART函数按照我的计划工作,并为运行一个快速测试付出了额外的努力。感谢!

经过您的反馈,我检查了从基本套件到外部MCU板的跳线连接,发现我没有连接到正确的引脚。理清了这个问题之后,uart_read()在修改后的ble_app_peripheral代码中正确地运行。我还验证了将另一个uart_read()放入接收完成回调中将允许我向应用程序接收多个输入数据块。我还尝试了更大的数据块(256字节),效果也很好。我甚至能够将接收到的数据值添加到数据库中,并在Android平板电脑上读取它们。很好!

再次感谢你的帮助,麦克斯