串行通信只能在低速下工作

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.xmece.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
4个职位/ 0个新职位
最后发表
jeroenLQD
离线
最后看到:3年3个月前
加入:2017-11-21 15:24
串行通信只能在低速下工作

你好,

我正在使用DA14681基本开发工具包,并且很高兴通过串行和JTAG上传示例。然而,无论终端上设置的波特率如何,打印到串行终端上的一切结果都是乱码。只有在/startup/config.c中设置波特率为9600(默认为115200),才能正常工作。

不能以较高的波特率打印对调试来说不一定是一个问题,但它确实让我感到奇怪。其他三个电路板和电脑也有同样的问题。在57600启动期间,板确实吐出了它的名字四次,所以它似乎在更高的速度下沟通得很好。我假设在引导加载程序完成它的工作之后,UART已经配置了config.c中的参数。可能是某些东西没有正确初始化或者某个时钟不稳定?

欢呼,
珀斯

设备:
jeroenLQD
离线
最后看到:3年3个月前
加入:2017-11-21 15:24
我们一直在摆弄它

我们已经对它进行了一些修改,并发现以下速度是可行的:

4800
9600 (4800 x 2)
19200 (4800x4)
38400 (4800 x 8)

波特率如果不是4800的两倍,就不会起作用。144000 (4800 x 3), 57600 (4800 x 12)和115200 (4800 x 24)都吐出了胡言乱语…

MT_dialog
离线
最后看到:5个月2个星期前
工作人员
加入:2015-06-08 34
嗨jeroenLQD,

嗨jeroenLQD,

这是因为基本套件不是使用FTDI芯片作为UART端口,而是jlink调试器的UART,因为jlink不设置其输出UART引脚高,除非是从PC传输到板的东西。在板复位后,引脚状态由电平移位器保持低。将引脚配置为UART_RX不会打开上拉电阻,因此RX线保持低电平,这种状态通常是断开状态。不管怎样,我们要做的就是调用下面的指令:

hw_gpio_configure_pin(HW_GPIO_PORT_2, HW_GPIO_PIN_3, HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_GPIO, 1);

在设置peri_init()中的pin UART函数之前使用该函数,您将能够操作基本工具包的UART,您可以检查以下代码片段:

静态孔隙periph_init(空白)

hw_gpio_configure_pin(HW_GPIO_PORT_2, HW_GPIO_PIN_3, HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_GPIO, 1);
hw_gpio_set_pin_function (HW_GPIO_PORT_1 HW_GPIO_PIN_3 HW_GPIO_MODE_OUTPUT,
HW_GPIO_FUNC_UART2_TX);
hw_gpio_set_pin_function (HW_GPIO_PORT_2 HW_GPIO_PIN_3 HW_GPIO_MODE_OUTPUT,
HW_GPIO_FUNC_UART2_RX);

此外,您还可以使用FTDI电缆,将UART引脚连接到电缆,而不是jlink的UART。

由于MT_dialog

jeroenLQD
离线
最后看到:3年3个月前
加入:2017-11-21 15:24
嗨MT_dialog,

嗨MT_dialog,

谢谢你的解释!我们测试了它,现在端口工作在所有波特率。奇怪的是,它在波特率为4k8 * 2^x的情况下工作得很好,但我很高兴它现在工作了。

欢呼,
珀斯