查看AD_UART.C中的代码,我可以看到以下内容:
void ad_uart_write_async(uart_device dev,const char *wbuf,size_t wlen,ad_uart_user_cb cb,
void *user_data)
{
uart_device_config *设备=(uart_device_config *)dev;
uart_bus_dynamic_data *data = device-> bus_data;
if(((设备 - > flags&ad_uart_device_flags_locking_async)){
ad_uart_bus_acquire_ex(dev,ad_uart_res_type_write);
}
data-> write_cb = cb;
data-> write_cb_data = user_data;
hw_uart_send(device-> bus_id,(const uint8_t *)wbuf,wlen,ad_uart_write_callback,dev);
}
在设置ad_uart_device_flags_locking_async时,似乎调用了“ ad_uart_bus_acquire_ex(..)”函数。
我对此代码段的解释是,我不必在使用异步调用函数时由我自己调用AD_UART_BUS_ACQUIRE_EX(..),以防设置设备标志。
如何配置UART或适配器,该标志已设置?
此致
Dieter
设备:
嗨,迪特,
让我检查您的问题,并尽快恢复给您。
谢谢,pm_dialog
嗨,迪特,
您能否澄清您的问题并分享有关您要完成的工作的更多意见?通常,我强烈建议您不要修改适配器和SDK文件。SDK提供了适配器。如果您进行任何修改,则不能保证它们会按预期工作。
谢谢,pm_dialog
你好,
我想知道如何在异步中使用UART适配器。传输模式。您的文档中的示例仅显示名称(阻止)模式。
因此,我查看了适配器代码(我不想肯定会更改),这对我来说尚不清楚如何正确使用此代码。这可以是示例中的代码序列,也可以是我所说的一些提示,如何在预期使用为异步传输时正确配置UART。
希望这为您澄清我的问题。如果您需要更多详细信息来回答我的问题,请告诉我。
此致
Dieter
嗨,迪特,
我可以在您指的是哪个示例中问?您应该使用所需的UART配置打开适配器,应使用AD_UART_OPEN()以打开适配器。然后,您应该执行异步UART写入的AD_UART_WRITE_ASYNC()。最后,您应该使用直到所有UART交易完成并关闭适配器(AD_UART_CLOSE)。
谢谢,pm_dialog
你好,
我正在使用的示例是您的文档:DA1468X软件平台参考
您在答案中描述的序列正是我实施的。因此,这并没有真正的帮助。因此,我仔细研究了ad_uart_device_flags_locking_async的定义。此标志已在AD_UART_WRITE_ASYNC(..)函数中选中该标志,以对ad_uart_bus_acquire_ex进行必要的调用(dev,ad_uart_res_type_write);
我的最初问题是如何配置设置此标志的UART。现在我自己找到了它,我的应用程序现在按预期运行。
问题的答案:
必须使用acro uart_dev(..),而不是在platform_devices.h文件中使用宏“ uart_bus(..)”,因为该宏还将使用“ _flags”参数,我可以将ad_uart_uart_device_flags_flags_logs_locks_locking_assync定义放置。
如果用户想使用_async -uart的函数,则将此提示添加为您的文档中的提示将是一个好主意。
此致
Dieter
嗨,迪特,
感谢您分享您的解决方案。我已要求您在下一个文档版本中实施您提议的文档添加。
/MHV