【黑金云课堂】FPGA技术教程Linux开发:串行通信接口与实时时钟模块

Linux 应用第 16-19 节 串行通信接口与实时时钟模块 ,选自ALINX 黑金云课堂 FPGA 免费直播课。该课程由 ALINX 资深工程师团队倾力打造,从 0 到 1 系统化教学,帮助每位工程师跨过 FPGA 开发门槛。

🔍 ALINX :关注 ALINX,进入视频号即可查看完整黑金云课堂 FPGA 视频教程。配合笔记学习效果更佳。

Uart 通信

  1. UART 基础:UART 是异步串行通信协议,常用 8N1 格式(8 位数据位、无校验、1 位停止位)。Zynq UltraScale+ 提供 2 个 UART 控制器,对应设备节点 /dev/ttyPS0和/dev/ttyPS1。ttyPS0 通常作为调试串口使用。

  2. 命令行控制 :使用stty命令配置串口参数(波特率、数据位等)。数据收发可直接通过echo和cat操作设备节点。minicom 提供交互式串口调试界面。

  3. C 语言编程 :通过termios结构体和tcsetattr()配置串口。主要步骤:打开设备→配置波特率和数据格式→使用 read/write 收发数据。Demo 程序提供发送、接收、回环测试三种模式。

  4. 实践要点:硬件连接时 TX 和 RX 需交叉连接,必须共地。最常见问题是波特率不匹配导致的乱码。回环测试需要短接 MOSI 和 MISO 引脚,用于验证硬件是否正常。

SPI 通信

  1. SPI 基础:SPI 是同步全双工串行通信协议,使用 4 根信号线(MOSI、MISO、SCLK、CS)。定义 4 种时钟模式(Mode 0-3),由 CPOL 和 CPHA 组合决定。Mode 0 最常用。

  2. QSPI Flash :Zynq 使用 QSPI Flash 作为启动存储器,存储 FSBL、U-Boot 和内核。Linux 中作为 MTD 设备访问,使用flash_erase擦除、dd命令读写。

  3. C 语言编程 :Linux 提供spidev用户空间驱动,通过/dev/spidevX.Y访问。使用ioctl(fd, SPI_IOC_MESSAGE, &xfer)进行数据传输。Demo 程序实现 Flash ID 读取、传输测试、回环测试功能。

  4. 实践要点:SPI 模式必须匹配从设备要求。回环测试将 MOSI 和MISO 短接验证硬件。Zynq 内置 SPI 控制器最高支持 50MHz 时钟频率。

I2C 通信

  1. I2C基础:I2C 是两线制串行总线(SDA、SCL),支持多主多从架构。使用7位地址识别设备。开漏输出需要外接上拉电阻(通常4.7KΩ)。

  2. i2c-tools 工具集 :i2cdetect扫描总线设备,i2cget/i2cset读写寄存器,i2cdump批量dump寄存器。是 I2C 调试的必备工具。

  3. C 语言编程 :通过/dev/i2c-X设备节点访问。使用ioctl(fd, I2C_SLAVE, addr)设置从机地址。读写 EEPROM 需要先写内存地址再读写数据,写入后需等待 5ms。

  4. 实践要点:缺少上拉电阻是最常见问题。EEPROM 写入后必须延时等待。地址冲突时可通过设备引脚修改地址。

RTC 实时时钟

  1. RTC 基础:RTC 是掉电保持运行的独立时钟电路,由纽扣电池供电。提供年/月/日/时/分/秒时间信息和闹钟功能。Zynq 内置 RTC 控制器,也可外接 I2C RTC 芯片。

  2. 命令行控制 :hwclock是主要操作工具(-r 读取、-w 写入系统时间、-s 同步到系统)。timedatectl提供更友好的状态查看。通过 sysfs 设置闹钟唤醒系统。

  3. C 语言编程 :使用rtc_time结构体表示时间(注意 tm_mon 范围0-11,tm_year 从1900起算)。常用 ioctl 命令:RTC_RD_TIME、RTC_SET_TIME、RTC_ALM_SET、RTC_AIE_ON。

  4. 实践要点:电池没电会导致时间丢失,需定期更换 CR2032 电池。有网络时推荐使用 NTP 校时,无网络时依赖 RTC 保持时间。

💡 完整视频讲解可前往 ALINX 视频号进行直播回看

更多细节欢迎关注我们黑金云课堂全年免费直播课,
黑金云课堂五月直播日历 我们将在每周二、三、四,同步推进 Verilog开发、Vitis开发、Linux开发三大系列,带你从零开始,稳扎稳打掌握 FPGA 开发全流程!

系列 内容定位
Verilog开发 硬件描述语言基础、逻辑设计、仿真调试
Vitis开发 Zynq软硬件协同、外设驱动、网络协议栈
Linux开发 嵌入式Linux系统移植、驱动编写、应用开发
相关推荐
xh didida39 分钟前
Linux -- 基础IO
linux·服务器·开发语言·c++
奋斗的阿狸_19861 小时前
ESP32-S3 + ES7210 四通道麦克风录音上传方案
c语言·开发语言·fpga开发
zly35002 小时前
centos7 mount设备挂载 /dev/sda1/硬盘挂载
linux·运维·服务器
hahaha60162 小时前
FPGA+ARM实现AWB的全流程
人工智能·嵌入式硬件·算法·计算机视觉·fpga开发
工业一体机老司机2 小时前
工业一体机选购后的系统部署:Ubuntu下Docker容器化运行与GPIO配置
linux·ubuntu·docker·人机交互
哎呦,帅小伙哦2 小时前
进程监控工具——htop
linux·运维·服务器
夏虫不可与之言冰3 小时前
Windows WSL2 (Ubuntu) 搭建 ESP‑IDF 6.1 开发环境全过程演示
linux·windows·ubuntu·esp32·乐鑫科技·乐鑫eim·乐鑫代理商
春涧草茶4 小时前
慢就是快12-12手动抛出异常
java·linux·前端
KING-WU5125 小时前
Linux 工具之Make 与 Makefile
java·linux·服务器
unicrom_深圳市由你创科技5 小时前
板上调试,先抓哪些信号?排查顺序是什么?
fpga开发