10-04-2020, 04:50 AM
Hello R0b0t1,
I do not know, what software you are using to operate the UART. I usually use C-programs for this purpose. So my experience is limited to Linux and C.
Before any further consideration, I would like to strongly discourage from using UART2 on ROCKPro64. It is used by system console in Linux, any my attempts to connect two-way communication to this port ended with the board hanging completely after some time. I tried Armbian, Mrfixit2001 and Ayufan images. It is better to activate one of unused UARTs and use it.
The C-interface for UART speed in Linux (cfsetispeed() ) is limited to only some baud-rates up to 230400. This might be the reason, why many software tools offer only limited UART-speed settings.
Once, I needed to overcome this issue on another ARM board. My solution was not very elegant, but I do not know any other:
Description of the control registers, and their settings can be found in the TRM document of RK3399 (http://opensource.rock-chips.com/images/...170408.pdf).
Maybe you could apply similar procedure?
Please, be aware that those boards cannot generate any UART frequency. Sometimes approximations must be used.
Best regards,
Gienek.
I do not know, what software you are using to operate the UART. I usually use C-programs for this purpose. So my experience is limited to Linux and C.
Before any further consideration, I would like to strongly discourage from using UART2 on ROCKPro64. It is used by system console in Linux, any my attempts to connect two-way communication to this port ended with the board hanging completely after some time. I tried Armbian, Mrfixit2001 and Ayufan images. It is better to activate one of unused UARTs and use it.
The C-interface for UART speed in Linux (cfsetispeed() ) is limited to only some baud-rates up to 230400. This might be the reason, why many software tools offer only limited UART-speed settings.
Once, I needed to overcome this issue on another ARM board. My solution was not very elegant, but I do not know any other:
- Open the device-file and set it for communication, by using the standard functions (fcntl(), tcsetattr(), ioctl()...)
- Map the memory part, which contains the UART control registers.
- Set the speed of UART directly in the control registers.
- Continue with communication in the program.
Description of the control registers, and their settings can be found in the TRM document of RK3399 (http://opensource.rock-chips.com/images/...170408.pdf).
Maybe you could apply similar procedure?
Please, be aware that those boards cannot generate any UART frequency. Sometimes approximations must be used.
Best regards,
Gienek.