littlebot
Published on 2025-04-15 / 0 Visits
0

【源码】基于ATmega328pb的多设备串行通信适配系统

项目简介

本项目是基于ATmega328pb的嵌入式系统,以RPUadpt适配板为核心。RPUadpt用于将控制板连接到多设备串行总线(如RPUbus),利用模块化8P8C连接器,通过RJ - 45接头和CAT5线缆传输差分对。凭借差分对强大的抗噪声能力,主机(如配备RPUpi的树莓派Zero或使用USBuart的台式机)能在嘈杂环境中通过物理安全的串行硬件与控制板进行通信和引导加载。

项目的主要特性和功能

  1. 多设备串行通信:支持多个控制板连接到主机的串行端口(UART),通过差分对传输数据,可实现较长距离(可能超1000米)的通信。
  2. 接口丰富:具备SPI接口,带有电平转换缓冲器,可连接从设备(如SD卡);支持I2C通信,允许程序读取地址并激活串行连接,主机也能设置引导加载地址。
  3. 硬件保护:收发器的差分驱动器在UART的TX输出为低电平时启用,无需特殊软件操作,且由于驱动器仅输出反相电平,碰撞不会损坏硬件。
  4. 引导加载功能:通过“make bootload”规则可将固件上传到目标设备的引导加载器。

安装使用步骤

前提条件

假设用户已经下载了本项目的源码文件,并且使用的是Debian、Ubuntu或Raspbian系统。需要安装AVR工具链相关的软件包。

安装AVR工具链

bash sudo apt-get install git gcc-avr binutils-avr gdb-avr avr-libc avrdude 相关软件包链接: - gcc-avr - binutils-avr - gdb-avr - avr-libc - avrdude

编译和上传固件

项目的核心文件在/lib文件夹中,每个示例都有自己的文件和Makefile。 - 编译固件:在示例文件夹中,执行make命令,可将固件编译成可重定位的elf文件,并转换为Intel格式的十六进制文件。 - 上传固件:执行make bootload命令,可将固件上传到目标设备的引导加载器。

注意事项

  • 当主机的串行端口打开(如使用PySerial、picocom或工具链上传工具)时,会拉低nDTR和nRTS线,管理器固件会发送引导加载地址并锁定其他主机。PySerial需要等待几秒钟,直到引导加载器超时结束。
  • ATmega328pb不在主线版本中,本项目仓库中包含了Atmel的atpack文件(DFP.1.2.209.atpack),供avr - gcc(GCC)5.4.0使用。编写本文时,Raspbian的avr - gcc(GCC)4.9.2不支持atpack文件。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】