I can send RS232 data via HPS UART1 but unable to read data. The scope shows RS232 data on RX pin but test code can’t read any data from /dev/ttyS1 and nothing when I ‘cat /dev/ttyS1’I can think of multiple reasons but right now I’m double checking the FPGA implementation. The RS232 pins that are used for UART1 are different then default. This has been implemented opening QSYS and select the HPS system, then select ‘peripheral pins'. Scroll down to the UART Controllers. Set the UART1 to use the FPGA fabric for it’s pinout. After generating the HDL the uart pins show up for connection, these are brought up to top.vhd and connected to the correct signals. The correct pins and voltages levels are called out in top.qsf. Please see attached photos One question I regarding FPGA implementation: In QSYS should HPS pin mode be set to ‘FPGA’ or should be set to ‘HPS I/O set’ and then use LoanIO to map to different pins?
I have done something very similar, using UART0. It's routed to FPGA pins, and that's correct - I think the LoanIO is if you want to use HPS pins for an FPGA peripheral. One thing I notice from your pin connections is you've not applied anything to the rts, cts etc signals. I don't know if they matter, but default values I've used are: '1' for cts, dsr and dcd, and '0' for ri. The other signals are outputs so can be ignored. This works fine for me.
Thanks, I did implement rts, cts, dcd, and ri but still same behavior. No rx data coming in from serial driverroot@cyclone5:~# cat /proc/tty/driver/serial serinfo:1.0 driver revision: 0: uart:16550A mmio:0xFFC02000 irq:194 tx:22516 rx:274 RTS|DTR 1: uart:16550A mmio:0xFFC03000 irq:195 tx:15 rx:0 RTS|DTR|RI