RISC-V MCU 串口通信记录 —— 基于Genesys2

  • FPGA开发板 : Genesys2
  • USB转串口线 : CMSIS-DAP
  • CPU主频90MHz,串口波特率115200bps

串口参数设置:

对于115200波特率,发送一位的时间为1/115200=8680ns,对于100MHz主频为868个时钟周期,对于90MHz主频约为781个时钟周期,这里设置baudrate计数最大值为781,计数每达该值时波特率时钟tick进行翻转,在tick上升沿采样(rx)或发送(tx)数据。

使用ILA观察信号:

可参考:【RISC-V Debug】学习笔记(三)借助 ILA 在线查看调试信号-icspec

在Settings窗口设置采样深度,并设置触发条件为 rx != 1:

  1. 串口向CPU发送数据0x55,CPU在tick上升沿采样并接收数据:
  1. CPU向串口发送数据,对tx_fifo发起写使能,给出写数据,检测到fifo非空后,tx_fifo读出数据:

tx_fsm开始发送数据:

上板测试:

Genesys2开发板集成了uart的micro-USB接口,但是和我的电脑不太兼容,因此选择了JC9和JC10管脚作为tx和rx :

按键的中断服务函数如下,CPU目前共有五个外部中断:

  1. 按下KEY0,CPU向串口发送数据 0x55 (Hex显示),若为ASCII,则接收数据为字符U(十六进制0x55对应的ASCII码) :
  1. 将接收设置改为ASCII,依次按下KEY1、KEY2,KEY3,CPU向串口发送字符串:
  1. 串口向CPU发送hex数据0x55,按下KEY4,LED显示CPU接收到的数据:

定时器中断的ISR如下,每隔1s触发一次定时器中断,向串口发送LED的当前位置:

串口接收数据如图所示,cnt从0到7循环,且间隔约为1秒:


相关推荐
加强洁西卡15 小时前
【RISC-V】.pushsection .popsection和.section .previous的区别
risc-v
liu_endong20 小时前
杰发科技AC7840——PWM触发多路ADC采样
mcu·国产·杰发科技·autochips
加强洁西卡21 小时前
【RISC-V】branch_test调用add_test陷入死循环的原因
risc-v
猫猫的小茶馆2 天前
【Linux 驱动开发】五. 设备树
linux·arm开发·驱动开发·stm32·嵌入式硬件·mcu·硬件工程
FPGA_小田老师2 天前
FPGA例程(7):UART串口接收程序--状态机的编写
fpga开发·uart·状态机·串口接收·uart_rx·串口程序·115200bps
意法半导体STM322 天前
【官方原创】如何基于DevelopPackage开启安全启动(MP15x) LAT6036
javascript·stm32·单片机·嵌入式硬件·mcu·安全·stm32开发
v_for_van2 天前
STM32低频函数信号发生器(四通道纯软件生成)
驱动开发·vscode·stm32·单片机·嵌入式硬件·mcu·硬件工程
信创天地2 天前
从 “替代” 到 “超越”:信创系统架构师如何筑牢自主可控技术底座
运维·安全·系统架构·开源·dubbo·risc-v
思尔芯S2C2 天前
思尔芯、MachineWare与Andes晶心科技联合推出RISC-V协同仿真方案,加速芯片开发
人工智能·科技·fpga开发·risc-v·prototyping
A-code2 天前
嵌入式UI刷新:观察者模式实战
stm32·单片机·mcu·物联网·51单片机