http://pynq.readthedocs.io/en/v2.1/overlay_design_methodology/pynq_microblaze_subsystem.html
baudrate 115200で問題なく通信できそう。
1. PYNQライブラリ(uart.c, uart.h)を使う実装(こっちの方が簡単)
#include <stdio.h> #include "platform.h" #include "xil_printf.h" #include "uart.h" int main() { init_platform(); print("hello world"); uart dev = uart_open(1,0); unsigned char *hoge = "a"; while(1){ uart_write(dev, hoge, 1); usleep(1000*1000); } cleanup_platform(); return 0; }
2. UartLiteのBSPライブラリを使用する実装
pynq io switchでUART0_RX, UART_TXを明示して使う必要がある
#include <stdio.h> #include "platform.h" #include "xil_printf.h" #include "xuartlite.h" #include "xuartlite_l.h" #include "xio_switch.h" #define UARTLITE_DEVICE_ID XPAR_UARTLITE_0_DEVICE_ID XUartLite UartLite; int main() { init_platform(); init_io_switch(); set_pin(0,UART0_RX); set_pin(1,UART0_TX); int Status; Status = XUartLite_Initialize(&UartLite, UARTLITE_DEVICE_ID); if (Status != XST_SUCCESS) { return XST_FAILURE; } print("hello world"); unsigned char *hoge = "a"; while(1){ XUartLite_Send(&UartLite, hoge, 1); usleep(1000*1000); } cleanup_platform(); return 0; }
補足
BSPの設定でstdioをiop_arduino_uartliteにすれば、print()で送信できるようになる。
補足2
スイッチサイエンスのFTDIモジュールでPCと接続するときは、
PYNQのRX→FTDIモジュールのTX
PYNQのTX→FTDIモジュールのRX
に接続する