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

你好呀,

我遇到了uart-沟通问题,我非常感谢你的帮助。:-)
因此,我正在使用PXP-Reporter(Suota)的演示作为基础,并且我添加了UART2(9600波特,AD_UART)来从不同的设备中读取信息,解析信息并通过BLE发送。它一般工作,但有时DA14681在通过UART阅读时崩溃。当我没有连接UART时,它永远不会崩溃,所以它绝对与它有关。我正在使用配置测试并扼杀一些问题:

1)据我所知,混合适配器和LLD的使用并不好。但是,如果我尝试禁用HW_UART,我会因为未解决的变量而获得编译器错误(例如,AD_UART.C中的“HW_UART_ID”。
是否可以仅使用适配器?如果我从未从HW_UART呼叫函数,则无论如何都不重要?

2)DMA也是如此。如果我禁用HW_UAR_USE_DMA_SUPPORT,则由于丢失的变量,我会收到编译器中的错误。
或者可以/更好地使用DMA在我的“设置”(抱歉,如果这是一个愚蠢的问题,我迄今为止遇到中断驱动的UART)?

4)根据数据表,FIFO缓冲区的UART2是16字节长。如果我想使用一个软件FIFO说100字节,我需要调用“ad_uart_set_soft_fifo”或它足够设置“dg_configUART2_SOFTWARE_FIFO_SIZE”到100?

3)我正在阅读的信息字节逐字节,通过ad_uart_read(同步)和一个50毫秒的超时。如果超时发生,它是重置设备还是简单地继续代码?

5)是否可以使用针1_3的ADC?因为在启动时,DA14681使用PIN用于UART通信(发送“DA14681”几次“)。
是否有一些配置要做,所以这个引脚完全用于ADC?

提前非常感谢,
菲利普

设备:
tr_dialog.
离线
最后一次露面:4天8小时前
职员
加入:2014-06-30 23:52
嗨Phillipp:

嗨Phillipp:

我将在对话框内部讨论这些问题并发布回复。

谢谢,

tr_dialog.

dsandbue
离线
最后一次露面:1年11个月前
加入:2017-02-15 14:09
非常感谢你!

非常感谢你!

dsandbue
离线
最后一次露面:1年11个月前
加入:2017-02-15 14:09
再次问好,

再次问好,

我在我的代码中发现了一个非常糟糕的bug, UART现在工作得很好。:-)

让我困扰的是问题5:
是否可以使用引脚1_3用于ADC?因为在启动时,DA14681使用PIN用于UART通信(发送“DA14681”几次“)。
是否有一些配置要做,所以这个引脚完全用于ADC?

一些附加信息:当我测量~ 2v电压时,AD转换工作如预期。然而,如果我插入电压超过2v,拔掉它,针1_3上的电压上升到接近3v。当我接地引脚,它停留在地面,但否则它停留在3v左右。
不幸的是,我必然会使用这个PIN,没有其他一个用于ADC。

非常感谢您的帮助,
菲利普

tr_dialog.
离线
最后一次露面:4天8小时前
职员
加入:2014-06-30 23:52
你好,

你好,

这是我收集的信息。我想发布它,因为它们是重要的指导方针:

1)请注意,适配器是一个lld之上的附加层(低级别驱动程序),并且不作为单独的任务实现。这就是为什么的原因如果禁用或中断相应外设模块的正常运行,它们就不能正常工作.因此,您可以直接使用UART lld(在hw_uart.h文件中描述)或UART适配器(在ad_uart.h文件中描述)没有介入在UART lld。

小费:我们建议使用适配器来访问硬件外围设备,因为不仅提供对外设的访问权限,还可以确保当前访问它的其他任务,暂停其操作,直到外围设备再次发布。因此,如果另一个任务在同一时间访问相同的外围设备,则不必担心。

2)据此查询的第1部分涉及相同的应用和在这种情况下(如果禁用DMA硬件外围设备,则无法成功使用适配器)。现在,关于DMA的一些事情。到目前为止,您了解中断驱动的概念即,即在MCU的RX引脚上到达字符,触发中断,以便从接收器和CPU间隔读取该字符。DMA是一个功能,使您有机会将所有传输从/到外围设备没有CPU间隔,换句话说,DMA可以与CPU同时运行。

小费:如果您与DMA合作,则是您的选择,根据您使用的应用程序,但如果要发送许多字符,则优选使用DMA,而不是强制CPU执行此任务,剥夺后者执行其他至关重要的任务。

3)就超时输入参数ad_uart_read()函数涉及有两个选项可以使用。第一个是设置它等于os_event_forevr.它强制您的应用程序卡住,直到收到所有数据量(使用此函数的第二个输入参数)。在所有其他情况下,函数可以在超时后退出,而不是请求的字节更少。这意味着您的应用程序不会陷入困境的所有数据量。

4)你必须定义这两个dg_configuart2_software_fifo_size.dg_configUART_SOFTWARE_FIFO宏。第一个定义确定分配空间和第二个定义的数量使不ad_uart_set_soft_fifo()函数的使用。

5)默认情况下,P1_3和P2_3引脚分别由BootLoader保留为UART_TX和UART_RX。
尽管您可以更改默认映射(请参阅可用配置选项表6:从串行启动的扫描步骤数据表)
不推荐,因为它需要Bootrom更改。相反,您可以使用任何其他可用的ADC引脚所示表2:引脚描述da14681-01_2v3.pdf

谢谢,

tr_dialog.

dsandbue
离线
最后一次露面:1年11个月前
加入:2017-02-15 14:09
非常感谢你的

非常感谢您的时间和努力,答案是优秀的,非常有益的。

就像我最后一个关于引脚1_3作为ADC的问题:它现在完美地工作,解决方案是删除J15(在专业板上),一些外围设备搞乱了引脚,现在它很好。:-)