你好,
我正在使用DA14681基本开发工具包,并且很高兴通过串行和JTAG上传示例。然而,无论终端上设置的波特率如何,打印到串行终端上的一切结果都是乱码。只有在/startup/config.c中设置波特率为9600(默认为115200),才能正常工作。
不能以较高的波特率打印对调试来说不一定是一个问题,但它确实让我感到奇怪。其他三个电路板和电脑也有同样的问题。在57600启动期间,板确实吐出了它的名字四次,所以它似乎在更高的速度下沟通得很好。我假设在引导加载程序完成它的工作之后,UART已经配置了config.c中的参数。可能是某些东西没有正确初始化或者某个时钟不稳定?
欢呼,
珀斯
设备:
我们已经对它进行了一些修改,并发现以下速度是可行的:
4800
9600 (4800 x 2)
19200 (4800x4)
38400 (4800 x 8)
波特率如果不是4800的两倍,就不会起作用。144000 (4800 x 3), 57600 (4800 x 12)和115200 (4800 x 24)都吐出了胡言乱语…
嗨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
嗨MT_dialog,
谢谢你的解释!我们测试了它,现在端口工作在所有波特率。奇怪的是,它在波特率为4k8 * 2^x的情况下工作得很好,但我很高兴它现在工作了。
欢呼,
珀斯