将UART添加到DA1458X_SDK项目中

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
4个帖子/ 0新
最后一篇
Diogenes.
离线
最后一次露面:2年6个月前
加入:2018-10-04 05:09.
将UART添加到DA1458X_SDK项目中

嗨对话框,

现在我正在努力在da1458x_sdk示例项目中添加UART2通信。
UART2与UART2_ASYNC项目在同一DA1458X_SDK示例项目中的通信工作正常。
但是通过将UART2_ASYNC函数添加到BLE_APP_ALL_IN_ONE项目中,UART2通信无法正常工作。
作为UART2函数,我只有相同的UART2_ASYNC函数。
发生异常现象。

刚刚通过调试器运行,希腊语中的字符测试版在控制台中出现。

执行后,UART2_PRINT_STRING(),从未完成行源。

虽然我通过调试器检查了UART2_HANDLER()中检查了中断。

我想BLE内核扰乱了我的UART2通信或其他UART任务正在运行。
但是我觉得自我在System_Init()中插入之前插入的奇怪。
并确保我冻结看门狗并注释出GPIO_INIT(),但我只写了必要的IO配置。
由于我遇到了这些奇怪的现象,我评论了所有UART相关的定义和函数,但结果是一样的。

任何人都可以解决这些问题?
或任何建议?

谢谢,

设备:
PM_DIALOG.
离线
最后一次露面:1天11小时前
职员
加入:2018-02-08 11:03
嗨Diogenes,

嗨Diogenes,

事实上,您正在使用BLE,设备将进入睡眠状态,因此16MHz晶体振荡器会断电,您将无法使用UART2。UART2才能在XTAL16M打开时工作。如果您想在使用BLE功能时打印数据,则应使用Arch_console.h标题文件中定义的ARCH_PRINTF()API。此API [将格式化的输出数据延装到UART队列中。在使用串行输出之前,用户应通过在da1458x_config_basic.h中定义CFG_PrintF标志来启用API。如果您使用Pro DK,则应更改FW的UART端口,并将UART_TX端口/引脚分配给P04和UART_RX端口/引脚至P05。请确保已更改的配置在HW_CONFIG_PRO_DK下,这将在HW_CONFIG定义中声明。此外,您必须在您正在工作的文件中包含ARCH_CONSOLE.H文件。

谢谢,PM_DIALOG.

Diogenes.
离线
最后一次露面:2年6个月前
加入:2018-10-04 05:09.
嗨pm_dialog,

嗨pm_dialog,

谢谢您的建议,
我可能需要更多详细解释。
首先,首先是开始16M Xtal并进入睡眠,UART就在初始化之后开始,如下所示,睡眠未开始睡眠。

//上电外围设备的电源域
setBits16(PMU_CTRL_REG,PERIPH_SLEEP,0);
而(!(getword16(sys_stat_reg)&per_is_up));
setBits16(CLK_16M_REG,XTAL16_BIAS_SH_ENABLE,1);

并且肯定地,我在启动UART之前插入了A​​rch_Disable_Sleep()和WDG_FREEZE()。
当我昨天测试至少UART的时候运行,但问题是打印字符串部分显示并未设置接收中断标志。

结果我解决了这个问题,我理解原因来自内核行为。
我在UART2_READ()和UART2_WRITE()之后插入了UART2_FINISH_TRANSFERS()而不是(UART2_READ_IN_POGRONGER){}然后UART2接收和UART2发送正常工作。
简而言之,RW内核的频繁的Systick中断其他中断可能无法正常工作,并且更具DA1485x的性能很差。
关于没有RW内核的UART2_ASYNC正常工作,但相同的功能与RW内核不适用于RW Kernel,我得出结论。

我有一个关于RW内核的问题,RTOS的刻度间隔是如何?
如果你知道它告诉我它,因为我关心频率,因为我也使用Systick。

谢谢,

PM_DIALOG.
离线
最后一次露面:1天11小时前
职员
加入:2018-02-08 11:03
嗨Diogenes,

嗨Diogenes,

抱歉,但对您的描述有点混淆。启动XTAL16是为了获得UART的正确数据是不够的,因为XTAL16M必须首先解决。The safest place that assures that the XTAL16 has settled correctly is in the app_on_ble_powered callback (since the core also requires the XTAL16 to operate), after going through that function and if you don’t go to sleep the device will have the XTAL16 settled and ready and you will be able to receive/transmit data via UART. When the device is in sleep mode, it shuts down the XTAL16 which is crucial for the clock generation off the UART, so after waking up you will have to wait for the XTAL16 to settle again. In my previous post I suggest you the safest way to use UART when using BLE functionality. One other information that I would like to let you know is that when the device is in sleep mode it shuts down the XTAL16 which is crucial for the clock generation off the UART, so after waking up you will have to wait to the XTAL16 to settle. Also, be aware that the DA1458x family chips have a very simple event driven scheduler and they are not based on the RTOS. The DA1468x family devices are based on the RTOS.

谢谢,PM_DIALOG.