你好呀,
我遇到了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)根据数据表,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使用PIN用于UART通信(发送“DA14681”几次“)。
有没有一些配置,所以这个引脚完全用于ADC?
提前非常感谢,
菲利普
设备:
菲尼普普:
我将在对话框内部讨论这些问题并发布回复。
谢谢,
tr_dialog.
非常感谢你!
再次问好,
我在我的代码中找到了一个非常讨厌的错误,Uart现在就像魅力一样。:-)
什么仍在困扰我的是问题5:
是否可以使用PIN 1_3进行ADC?因为在启动时,DA14681使用PIN用于UART通信(发送“DA14681”几次“)。
有没有一些配置,所以这个引脚完全用于ADC?
一些附加信息:当我测量〜2 V下的电压时,AD转换工作正常工作。但是,如果我插入超过2 V的电压并拔下电源,请将引脚1_3上的电压上升到近3 V.当我接地时别针,它留在地上,但否则它左右3 V.
不幸的是,我必然会使用这个PIN,没有其他一个用于ADC。
非常感谢您的帮助,
菲利普
你好,
这是我收集的信息。我想发布它,因为它们是重要的指导方针:
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.
非常感谢您的时间和努力,答案非常好,非常有信息。
只是作为关于PIN 1_3作为ADC的最后一个问题的补充:它现在完美工作,解决方案是删除J15(在Pro-Lobs)上,有些周边搞砸了PIN,现在它很好。:-)