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

你好,

我有一个uart沟通的问题,我非常感谢你的帮助。:-)
因此,我使用pxe -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)根据数据表,UART2的FIFO缓冲区长为16个字节。如果我想用软件fifo说出100字节,我是否需要调用“ad_uart_set_soft_fifo”,或者是否足以将“dg_configuart2_software_fifo_size”设置为100?

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

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

提前感谢你,
菲利普

设备:
TR_Dialog
离线
最后看到:10小时前1天
工作人员
加入:2014-06-30 23:52
菲尼普普:

菲尼普普:

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

谢谢,

TR_DIALOG

Dsandbue.
离线
最后看到:1年11个月前
加入:2017-02-15 14:09
非常感谢!

非常感谢!

Dsandbue.
离线
最后看到:1年11个月前
加入:2017-02-15 14:09
你好再次,

你好再次,

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

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

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

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

TR_Dialog
离线
最后看到:10小时前1天
工作人员
加入:2014-06-30 23:52
你好,

你好,

这是我收集的信息。我想把它贴出来,因为它们是重要的指导方针:

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

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

2)就这个查询的第一部分而言,同样的应用和在这种情况下(如果禁用DMA硬件外设,你将不能成功地使用适配器)。现在,关于dma的一些事情。到目前为止,你知道中断驱动的概念,即一个字符到达你的MCU的RX引脚和中断被触发,所以你可以从接收器读取字符和所有这些与CPU间隔。dma是一个让你有机会从外设/到外设进行所有传输的功能没有CPU时间间隔换句话说,dma可以与CPU同时运行。

提示:这是你的选择你是否对于处理程序,这取决于应用程序和你一起工作,但如果有许多字符发送它将比使用直而不是强迫CPU做这个任务,使后者执行其他至关重要的任务。

3) As far As超时输入参数ad_uart_read ()函数所关心的是,有两个选项可以使用。第一个是让它等于OS_EVENT_FOREVR这将强制您的应用程序在接收到所有的数据量(通过该函数的第二个输入参数指定)之前保持不变。在所有其他情况下,函数可以在超时后以小于请求的字节退出。这意味着您的应用程序不会在等待所有数量的数据时卡住。

4)你必须定义两个都dg_configUART2_SOFTWARE_FIFO_SIZEdg_configuart_software_fifo.宏。第一个定义确定分配的空间数量,第二个定义确定分配的空间数量启用与否使用AD_UART_SET_SOFT_FIFO()函数。

缺省情况下,P1_3和P2_3引脚被引导加载程序分别预留为UART_TX和UART_RX。
虽然您可以更改默认映射(请参阅可用的配置选项表6:从串行引导的扫描步骤的数据表)
不推荐,因为它需要bootROM更改。相反,您可以使用上面描述的任何其他可用的ADC引脚表2:引脚描述的DA14681-01_2v3.pdf

谢谢,

TR_DIALOG

Dsandbue.
离线
最后看到:1年11个月前
加入:2017-02-15 14:09
非常感谢你的

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

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