⚠️
你好。。谢谢你来参加论坛。令人兴奋的消息!我们现在正在移动到我们的新论坛平台,将提供更好的功能,并包含在主对话网站的过程。所有帖子和账号都已迁移。我们现在只接受新论坛上的流量-请在//www.xmece.com/support. 我们将在未来几天内修复bug/优化搜索和标记。
6个职位/0个新职位
最后一篇文章
Dsandbue.
离线
最后一次见到:1年9个月前
已加入:2017-02-15 14:09
UART问题

你好,

我在UART通信方面遇到问题,非常感谢您的帮助。:-)
因此,我以pxp reporter(支持SUOTA)演示为基础,添加了UART2(9600baud,adïuart)从不同的设备读取信息,解析信息并通过BLE发送。它的工作一般,但有时DA14681崩溃时,通过UART读入。当我不连接UART时它不会崩溃,所以它肯定和它有关。我正在测试配置,偶然发现了一些问题:

1) 据我所知,混合使用适配器和lld是不好的。但是,如果我尝试禁用hw\u uart,就会因为未解析的变量(例如ad\u uart.c中的“hw\u uart\u ID”)而导致编译器错误。
是否可以只使用适配器?或者如果我从不从硬件调用函数也没关系?

2) DMA也是如此。如果我禁用HW\u UAR\u USE\u DMA\u支持,我会从编译器中得到大量错误,因为缺少变量。
或者在我的“设置”中使用DMA是否可能/更好(抱歉,如果这是一个愚蠢的问题,我到目前为止只遇到了中断驱动的UART)?

4)根据数据表,UART2的FIFO缓冲区长为16个字节。如果我想用软件fifo说出100字节,我是否需要调用“ad_uart_set_soft_fifo”,或者是否足以将“dg_configuart2_software_fifo_size”设置为100?

3)我通过AD_UART_READ(SYNC)和50毫秒的超时读取信息字节字节。如果发生超时,它是否会重置设备或简单地继续使用代码?

5) ADC是否可以使用引脚1\U 3?因为在启动时,DA14681正在使用该引脚进行UART通信(多次发送“DA14681”)。
有没有一些配置,所以这个引脚完全用于ADC?

提前多谢了,
菲利普

设备:
tru对话框
离线
最后一次见到:7小时15分钟前
工作人员
已加入:2014-06-30 23:52
菲尼普普:

菲尼普普:

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

谢谢,

tru对话框

Dsandbue.
离线
最后一次见到:1年9个月前
已加入:2017-02-15 14:09
非常感谢你!

非常感谢你!

Dsandbue.
离线
最后一次见到:1年9个月前
已加入:2017-02-15 14:09
又是你好,

又是你好,

我在我的代码中找到了一个非常讨厌的错误,Uart现在就像魅力一样。:-)

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

一些附加信息:当我测量〜2 V下的电压时,AD转换工作正常工作。但是,如果我插入超过2 V的电压并拔下电源,请将引脚1_3上的电压上升到近3 V.当我接地时别针,它留在地上,但否则它左右3 V.
不幸的是,我一定要用这个引脚,没有其他的ADC。

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

tru对话框
离线
最后一次见到:7小时15分钟前
工作人员
已加入:2014-06-30 23:52
你好,

你好,

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

1) 请注意,适配器是LLD顶部的附加层(低级驱动程序)并不是作为单独的任务来实现的。这就是为什么如果禁用或扰乱相应外围模块的正常操作,它们无法正常工作。因此,您要么直接使用UART LLD(在HW_UART.H文件中描述)或UART适配器(描述于AD_UART.H文件)不介入在UART LLD。

提示:我们建议使用适配器来访问硬件外设,因为它不仅提供对外设的访问,而且确保当前正在访问它的其他任务在外设再次释放之前暂停其操作。因此,如果另一个任务同时访问同一个外围设备,您不必担心。

2) 就这个查询的第一部分而言,同样的情况也适用,在这种情况下(如果您禁用DMA硬件外围设备,您将无法成功地使用适配器)。现在,关于DMAs的一些事情。到目前为止,您已经了解了中断驱动的概念,即一个字符到达MCU的RX引脚,并触发一个中断,以便您可以从接收器读取该字符,所有这些都以CPU间隔进行。DMAs是一种功能,它使您有机会从外设进行所有传输无CPU间隔换句话说,DMAs可以与CPU同时运行。

提示:您可以选择是否使用DMAs,这取决于您使用的应用程序,但是,如果要发送的字符太多,则最好使用DMAs,而不是强制CPU执行此任务,从而使后者无法执行其他关键任务。

3) 至于超时输入参数读取()函数有两个选项可供使用。第一个是把它设为操作系统事件这将强制应用程序在接收到所有数据量(使用此函数的第二个输入参数指定)之前停止。在所有其他情况下,函数可以在超时后以比请求的字节更少的字节退出。这意味着您的应用程序不会等待所有的数据量。

4) 你必须定义两个都dg配置2软件FIFO大小dg_configuart_software_fifo.宏。第一个定义确定分配的空间量,第二个定义确定分配的空间量启用与否使用AD_UART_SET_SOFT_FIFO()函数。

5) 默认情况下,引导加载程序将P1_3和P2_3引脚分别保留为UART_TX和UART_RX。
虽然您可以更改默认映射(请参阅可用的配置选项表6:从串行启动的扫描步骤数据表)it
不建议使用,因为它需要bootROM更改。相反,您可以使用上描述的任何其他可用ADC引脚表2:引脚说明DA14681-01Ø2v3.pdf的

谢谢,

tru对话框

Dsandbue.
离线
最后一次见到:1年9个月前
已加入:2017-02-15 14:09
非常感谢你的

非常感谢您的时间和努力,答案非常好,非常有信息。

只是作为关于PIN 1_3作为ADC的最后一个问题的补充:它现在完美工作,解决方案是删除J15(在Pro-Lobs)上,有些周边搞砸了PIN,现在它很好。:-)