你好呀,
我遇到了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?
提前非常感谢,
菲利普
设备:
嗨Phillipp:
我将在对话框内部讨论这些问题并发布回复。
谢谢,
tr_dialog.
非常感谢你!
再次问好,
我在我的代码中发现了一个非常糟糕的bug, UART现在工作得很好。:-)
让我困扰的是问题5:
是否可以使用引脚1_3用于ADC?因为在启动时,DA14681使用PIN用于UART通信(发送“DA14681”几次“)。
是否有一些配置要做,所以这个引脚完全用于ADC?
一些附加信息:当我测量~ 2v电压时,AD转换工作如预期。然而,如果我插入电压超过2v,拔掉它,针1_3上的电压上升到接近3v。当我接地引脚,它停留在地面,但否则它停留在3v左右。
不幸的是,我必然会使用这个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.
非常感谢您的时间和努力,答案是优秀的,非常有益的。
就像我最后一个关于引脚1_3作为ADC的问题:它现在完美地工作,解决方案是删除J15(在专业板上),一些外围设备搞乱了引脚,现在它很好。:-)