# 功能接口
这里描述CM4 Industrial硬件接口, 和一些功能模块, 包括信号Pinout, 以及对应的软件用法.
# 接口框图
# 正面
# 背面
# 系统功能
# Raspberry Pi CM4
CM4 Industrial支持多种规格Raspberry Pi CM4:
- 可选内存 1GB | 2GB | 4GB | 8GB
- 可选eMMC 0GB(Lite版, 不带eMMC) | 8GB | 16GB | 32GB
- 可选是否配置Wi-Fi/BT
客人可根据需求, 选择不同的CM4核心模块, 具体可参考订购编码
# 复位按键
板载上有一个复位按键, 按下即可复位硬件.
# 用户按键
CM4 Industrial有一个用户按键, 连接到CPU的GPIO6, 低电平有效. 客户可以通过使用libgpiod (opens new window)来实现一些按键事件(回调)功能.
# RTC实时时钟
CM4 Industrial上集成有RTC, 对于国内销售的版本, 我们出货会默认附带安装CR1220纽扣电池(RTC备份电源). 这样, 可以保障系统有一个不间断的可靠的时钟, 不受设备下电等因素影响.
默认出货系统镜像, 会集成我们编写的RTC自动同步服务, 客人无需设置, 即可自动同步时钟, 可无感使用RTC. 大概的原理是:
- 系统开机时, 服务自动从RTC读出保存的时间, 并同步到系统时间
- 若有连接互联网, 系统会自动从NTP服务器同步时间, 使用互联网时间更新本地系统时间
- 系统关机时, 服务自动把系统时间写入RTC, 更新RTC的时间
- 因为有安装纽扣电池, 尽管CM4 Industrial下电, 但是RTC仍在工作计时
这样, 可以保证我们的时间是准确可靠的.
注: 若是第一次开机, 因为RTC中无有效时间, 可能会同步失败, 直接重启即可. 重启的时候, 会把系统时间写入RTC, 后续正常使用.
若您不想用此服务, 可手动关闭:
sudo systemctl disable rtc
sudo reboot
重新使能此服务
sudo systemctl enable rtc
sudo reboot
# 手动操作RTC
手动读取RTC的时间
sudo hwclock -r
手动同步RTC时间到系统
sudo hwclock -s
把系统时间写入RTC
sudo hwclock -w
# 问题排查
请首先看是否有rtc设备(/dev/rtc0)加载:
ls /dev/rtc0
如果没有, 可能是您使用了官方标准系统, 但是没有安装我们的BSP包, 请参考章节: "通过apt-get安装BSP包"安装BSP, 另外, 您同样需要安装 ed-rtc
包使能RTC自动同步功能.
其他可能的检查点:
- CR1220纽扣电池有没有安装
- NTP网络时间协议, 需要连接互联网才可自动同步时间, 另外, 需要开放端口(UDP, 123), 否则同步失败
# 存储
# micro SD / eMMC
CM4 Industrial上有一个micro SD卡插槽, 与CM4 Lite配合使用.
注意
仅当您选用CM4 Lite(不带eMMC)核心模块时, 才需用到micro SD卡, 用于主文件系统存储. 若您选用带eMMC的CM4模块时, 此micro SD卡插槽不可用, 它与eMMC共用一个MMC口.
# 串行Flash
CM4 Industrial通过SPI扩展了一片SPI Flash, 32Mbits, 也就是4MByte, 可供客人存储数据等. 在Linux上, 串行Flash被识别为MTD(Memory Technology Device)设备, CM4 Industrial上, 此Flash的设备文件是 /dev/mtd0
注意
MTD设备与我们常见的块设备(Block)如硬盘, SDCard, U-Disk, eMMC不同. 典型的区别, MTD设备要进行Erase操作, 而Erase的Sector通常大于写单元的Page. 而Block设备通常有设备硬件处理, 在Host端不太区别写和擦除. 我们通常使用JFFS2
文件系统来管理MTD设备, 而不是ext4
.
注意
若客人使用我们提供的镜像, 此功能默认开启, 若使用官方镜像, 需要按照我们的BSP包, 请参考章节: "通过apt-get安装BSP包"安装BSP.
- 安装
mtd-utils
工具管理Flash设备
sudo apt update
sudo apt install mtd-utils
- 第一次使用, 或者您需要'格式化', 请Erase整片Flash设备
sudo flash_erase /dev/mtd0 0 0
- 以
JFFS2
类型挂载, 读写
sudo mount -t jffs2 /dev/mtd0 /mnt
挂载后, 您就可以对 /mnt目录读写来读写Flash设备了
# 摄像头
CM4 Industrial上有2路CSI摄像头接口, 丝印分别标识: CSI1 和 CSI0, 支持 Raspberry Pi 官方 5M & 8M 像素摄像头模组. 我们提供的预置BSP的镜像, 已经支持摄像头功能, 若客人使用我们提供的镜像, 此功能默认开启, 若使用官方镜像, 需要按照我们的BSP包, 请参考章节: "通过apt-get安装BSP包"安装BSP.
要使用CSI摄像头, 请首先通过raspi-config
使能.
- 使能摄像头
sudo raspi-config
选择Interfacing Options
-> Camera
, 回车, 然后选择Yes, 跳转到Finish
, 然后会提示是否重启, 需重启生效.
- 检查摄像头是否使能
vcgencmd get_camera
supported=1 detected=1
supported指示使能了几个摄像头, detected指示已插入, 并检测到了多少个摄像头
- 拍照示例
raspistill -o Desktop/image.jpg
# 可指定width, height
raspistill -o Desktop/image-small.jpg -w 640 -h 480
- 录像示例
# 录制10s视频
raspivid -o Desktop/video.h264 -t 10000
提示
若摄像头不可用, 请检查:
- 是否使用我们提供的镜像, 如果是使用官方的镜像, 是否有安装BSP
- 是否已经通过
raspi-config
使能摄像头 - 可以先通过
vcgencmd get_camera
检测下摄像头
# 显示
CM4 Industrial3路显示接口, 并可以做到双屏异显.
- 若您使用桌面版系统, 可以通过
开始菜单 -> Preferences -> Screen Configuration
来配置 - 若您使用Lite版系统, 请参考xrandr (opens new window)的使用用法
# HDMI标准接口
CM4 Industrial有一个标准HDMI Type A接口, 直接连接HDMI显示屏, 即可工作.
# HDMI FPC接口
J65, 丝印: HDMI LCD 是另外一路HDMI接口, FPC的形式, 上面预留USB 2.0触屏信号, PWM亮度调节信号, 可接 HDMI触屏. 我司正在开发此产品, 可联系我司销售人员获取最新状态.
# MIPI DSI接口
J61, 丝印: DSI1 是MIPI DSI接口, 可配合Raspberry Pi官方7寸触摸屏使用, 我司也有销售此产品, 见: 7”带触摸显示屏 (opens new window), 可联系我司销售人员获取此产品报价等.
CM4 Industrial上J72, 在DSI1 FPC座子附近, 是一个5V@1A的直流电源输出, 可以为官方7寸触摸屏供电, 配合使用.
若使用我们出厂镜像, MIPI DSI已经使能, 可直接使用, 若使用官方镜像, 需要按照我们的BSP包, 请参考章节: "通过apt-get安装BSP包"安装BSP.
# 有线接口
# 千兆以太网
CM4 Industrial上有一路自适应 10 / 100 / 1000Mbsp 以太网接口, 丝印标识: 10/100/1000, 与DC电源座子相邻, 建议使用Cat6(六类)网线配合使用. 系统默认使用DHCP自动获取IP, 如果希望配置静态IP, DNS等, 请参考 dhcpcd的用法: dhcpcd手册 (opens new window)
# 百兆以太网
CM4 Industrial还上有一路自适应 10 / 100Mbsp 以太网接口, 丝印标识: 10/100, 与USB Type-A双层座子相邻, 是通过USB 2.0扩展而来.
注意
若使用我们的出厂镜像, 此硬件功能是可用的, 若使用官方镜像, 需要按照我们的BSP包, 请参考章节: "通过apt-get安装BSP包"安装BSP.
我们出厂时, 已经为百兆以太网烧录了MAC地址, 若客户想烧录自己的MAC地址, 我们提供烧录脚本, 可自行操作.
git clone https://gist.github.com/8c5c05e1bf22eff4e6ea76ae429f377a.git lan-utils
cd lan-utils
./lan9500-mac-addr-set.sh
Usage: { prog addr | read | erase }
- 读取当前的MAC地址
sudo ./lan9500-mac-addr-set.sh read
- 擦除 / Erase
sudo ./lan9500-mac-addr-set.sh earse
- 烧录MAC地址, 重启生效
sudo ./lan9500-mac-addr-set.sh prog aa:bb:cc:dd:ee:ff
Program MAC address: aa:bb:cc:dd:ee:ff...... OK
sudo reboot
# USB 2.0 Host Type-A
CM4 Industrial上有2个USB 2.0 Type A接口, 若使用我们的出厂镜像, USB Host功能是可用的, 若使用官方镜像, 需要按照我们的BSP包, 请参考章节: "通过apt-get安装BSP包"安装BSP.
# USB 2.0 Host Pin Header
CM4 Industrial上还有2路USB 2.0 Host通过1x4 2.54mm PinHeader方式的引出, J44和J63. 客户可根据自己的应用扩展USB Device设备.
若使用我们的出厂镜像, USB Host功能是可用的, 若使用官方镜像, 需要按照我们的BSP包, 请参考章节: "通过apt-get安装BSP包"安装BSP.
# USB micro-B
J73 USB micro-B接口, 丝印: "USB PROGRAM", 靠近RTC电池座子, 主要用来eMMC的烧录, 如何烧录, 请参考章节: eMMC烧录
# 无线通信
CM4 Industrial提供了丰富的无线通信支持, 支持双频WiFi, 蓝牙5.0和可选的4G LTE全网通通信支持.
# 双频WiFi
客户可选购带WiFi版本的CM4 Industrial, 支持 2.4 GHz, 5.0 GHz IEEE 802.11 b/g/n/ac 双频WiFi. 我们提供双频外置天线, 已与Raspberry Pi CM4一起通过无线认证.
# 使能WiFi功能
WiFi功能默认是屏蔽的, 客人首先需要设置国家区域后才可使用. 若使用桌面版系统, 可参考 章节: 初始化设置, 配置WiFi, 若使用Lite版系统, 请使用 raspi-config 设置WiFi国家区域, 参考文档: "Raspberry Pi官方文档 - Using the Command Line" (opens new window)
# 外置天线 / 内置PCB天线
可以通过软件配置, 来切换使用外置天线还是内置PCB天线. 考虑到兼容性和最广泛的支持性, 出厂默认系统是选用的内置PCB天线, 若客户选配带外壳的整机, 并配置了外置天线, 可以通过以下操作来切换:
编辑 /boot/config.txt
sudo nano /boot/config.txt
选择外置天线, 加入
dtparam=ant2
然后重启设备后生效.
# AP
CM4 Industrial上的WiFi还支持配置为:
AP路由器模式 / a Routed Wireless Access Point
+- RPi -------+
+---+ 10.10.0.2 | +- Laptop ----+
| | WLAN AP +-))) (((-+ WLAN Client |
| | 192.168.4.1 | | 192.168.4.2 |
| +-------------+ +-------------+
+- Router ----+ |
| Firewall | | +- PC#2 ------+
(Internet)---WAN-+ DHCP server +-LAN-+---+ 10.10.0.3 |
| 10.10.0.1 | | +-------------+
+-------------+ |
| +- PC#1 ------+
+---+ 10.10.0.4 |
+-------------+
桥接模式 / a Bridged Wireless Access Point
+- RPi -------+
+---+ 10.10.0.2 | +- Laptop ----+
| | WLAN AP +-))) (((-+ WLAN Client |
| | Bridge | | 10.10.0.5 |
| +-------------+ +-------------+
+- Router ----+ |
| Firewall | | +- PC#2 ------+
(Internet)---WAN-+ DHCP server +-LAN-+---+ 10.10.0.3 |
| 10.10.0.1 | | +-------------+
+-------------+ |
| +- PC#1 ------+
+---+ 10.10.0.4 |
+-------------+
或者混合模式
请客人参考开源项目 github: garywill/linux-router (opens new window) 了解如何配置.
# 蓝牙5.0
CM4 Industrial可选配是否集成蓝牙功能, 如若带蓝牙的话, 此功能默认是开启的. 客人可使用 bluetoothctl
扫描, 配对, 连接蓝牙设备, 具体请参考: ArchLinux - Wiki - Bluetooth (opens new window)
# 4G LTE
客人可选购是否带4G模块, 我们在国内配置了移远EC20全网通4G模块, 支持移动, 联通和电信网络制式. 客人必须使用我们默认的出厂镜像, 若使用官方镜像, 需要按照我们的BSP包, 请参考章节: "通过apt-get安装BSP包"安装BSP, 并且安装ed-networkmanager
包, 若没有安装此包, 执行安装
sudo apt install ed-networkmanager
sudo reboot
# 设置4G网络
使用此命令设置4G网络
# sudo nmcli connection add type gsm con-name <connection_name>
# 创建一个名为mobilegsm的gsm网络
sudo nmcli connection add type gsm con-name mobilegsm
提示
如果上面命令没有作用,这里有一些例子,可以仿照例子创建自己的网络
# sudo nmcli connection add type gsm con-name <mobile> ifname cdc-wdm0 gsm.number <number> gsm.apn <apn> gsm.username <username> gsm.password <password>
# 中国移动
sudo nmcli connection add type gsm con-name "mobile" ifname cdc-wdm0 gsm.number "*98*1#" gsm.apn "cmnet"
# 中国联通
sudo nmcli connection add type gsm con-name "Unicom" ifname cdc-wdm0 gsm.number "*99#" gsm.apn "3gnet"
# 中国电信
sudo nmcli connection add type gsm con-name "Telecom" ifname cdc-wdm0 gsm.number "#777" gsm.username "ctnet@mycdma.cn" gsm.password "vnet.mobi"
开机后, 考虑到拨号时间, 等待若干分钟后, 客人可通过ifconfig
查看网络状态.
# 故障排除
请先确认:
- 有无插micro SIM卡, 并且无欠费
- 有无连接4G外置天线
- 是否使用默认出厂镜像, 或者在官方镜像上安装过我们的BSP
- 蓝色的4G指示灯有没有闪
- 如果确定都没有问题,可以使用以下命令重置4G模块
raspi-gpio set 10 pd
raspi-gpio set 10 op dl
raspi-gpio set 10 dh
raspi-gpio set 10 dl
sudo reboot
客户可通过 以下指令查看是否有安装过BSP
dpkg -l | grep ed-cm4ind
dpkg -l | grep networkmanager
# 工业控制接口
CM4 Industrial上, 预留丰富的工业控制总线, 有:
- 1x RS232
- 1x Serial (TTL电平)
- 2x RS485
- 2x 光隔离DI
- 1x 双刀双掷继电器
多数信号, 以凤凰端子方式引出.
# 设备文件对照表
接口ID | BCM2711外设ID | Linux设备文件(V1.1) | Linux设备文件(V1.2) | Linux设备文件(硬件V1.3) |
---|---|---|---|---|
J58 / UART0, Pin Header | UART1 | /dev/serial0 | /dev/serial0 | /dev/serial0 |
RS485-1 | UART4 | /dev/ttyAMA2 | /dev/ttyAMA2 | /dev/ttyAMA2 |
RS485-2 | UART3 | /dev/ttyAMA1 | /dev/ttyAMA1 | /dev/ttyAMA1 |
RS232 | UART5 | /dev/ttyAMA3 | /dev/ttyAMA3 | /dev/ttyAMA3 |
DIN1 | GPIO11 | |||
DIN2 | GPIO26 | |||
继电器 | GPIO22 | |||
ADC - AIN1 | in_voltage4_raw | N/A | in_voltage1_raw | |
ADC - AIN2 | in_voltage6_raw | N/A | in_voltage2_raw | |
ADC - AIN3 | in_voltage7_raw | N/A | in_voltage3_raw | |
蜂鸣器 | GPIO25 | |||
J68, 1xGPIO | GPIO27 |
# Serial / UART (TTL)
J58, 丝印: UART0, 一路TTL电平Serial / UART, 以1x4 2.54mm PinHeader方式引出. 对应BCM2711上的UART1. 若使用我们的出厂镜像, 此串口默认作为Linux系统的tty控制台, 客户可通过Host端(Windows / Linux / Mac), 连接此串口, 来登录到CM4 Industrial的Linux系统, 执行命令等操作.
若使用官方镜像, 需要按照我们的BSP包, 请参考章节: "通过apt-get安装BSP包"安装BSP.
除了作为系统Console外, 这个串口还可以配置为普通的串口, 与其他设备通信, 请按照下述步骤来:
- 打开 raspi-config:
sudo raspi-config
. - 选择 option 3 - Interface Options.
- 选择 option P6 - Serial Port.
- 提示
Would you like a login shell to be accessible over serial?
回答 'No' - 提示
Would you like the serial port hardware to be enabled?
回答 'Yes' - 退出 raspi-config
- 重启设备生效:
sudo reboot
注意: 若RS232口配置为普通串口, 在Linux上的设备节点是
/dev/serial0
.
# RS232
CM4 Industrial上有一路RS232, 对应CPU上的原生UART, 使用SP3232电平转换芯片, 直接在凤凰端子输出232电平. 请参考上述设备文件对照表, 查看232接口对应的Linux设备节点(文件).
若使用官方镜像, 需要按照我们的BSP包, 请参考章节: "通过apt-get安装BSP包"安装BSP.
# RS485
CM4 Industrial上有2路RS485, 均对应BCM2711上的原生串口, 并使用SP3485接口芯片做电平转换. 请参考上述设备文件对照表, 查看各个485接口对应的Linux设备节点(文件).
注意
若使用官方镜像, 需要安装我们的BSP包才可以正常使用此功能, 请参考章节: "通过apt-get安装BSP包"安装BSP.
# ADC
CM4 Industrial上有3路ADC通道, 以下以AIN1为例, 演示如何读取:
cd /sys/bus/iio/devices
cd iio\:device0
cat in_voltage4_raw
注意
CM4 Industrial不同硬件版本, ADC有所区别, 请参考上述设备文件对照表, 查看各个版本ADCIN对应的Linux设备节点(文件):
- 硬件V1.1使用的ADC芯片为STMPE811, 具体参考: 数据手册 (opens new window)
- 硬件V1.2, 因为STMPE811供应链短缺, 无ADC芯片
- 硬件V1.3使用的ADC芯片为ADS1015, 具体参考: 数据手册 (opens new window)
注意
若使用官方镜像, 需要安装我们的BSP包才可以正常使用此功能, 请参考章节: "通过apt-get安装BSP包"安装BSP.
# 继电器
CM4 Industrial板载一个双刀双掷继电器, 由GPIO22引脚的高低电平控制该继电器的开关, 默认状态下为常闭, COM1和NC1导通, COM2和NC2导通. 当GPIO22为高电平时, 继电器打开, COM1和NO1导通, COM2和NO2导通.
- 打开继电器
sudo raspi-gpio set 22 op dh
- 闭合
sudo raspi-gpio set 22 op dl
# 蜂鸣器
CM4 Industrial上配置了一个蜂鸣器, 可以通过GPIO控制, 对应GPIO为GPIO25
.
打开蜂鸣器
sudo raspi-gpio set 25 op dh
关闭
sudo raspi-gpio set 25 op dl
# GPIO Pin Header
CM4 Industrial通过1x2 2.54mm Pin Header引出一路GPIO, 直连CPU上的GPIO27, 客户可直接使用raspi-gpio
操作, 可配置为输出或输入.
# 扩展接口
# Mini PCIe
CM4 Industrial上有一路Mini PCIe扩展接口, 可扩展一些外设, 如4G, 5G, NPU等. 上面有1-lane PCIe Gen2, 速度高达5Gbps, 另有一路USB 2.0 Host接口.
我司支持移远的EC20 4G全网通模块, 并作为一个可选项直接安装到整机里, 请参考"订购编码"选购. 我司也正考虑5G模块的支持, 尽情期待.
# 40-PIN GPIO, 兼容Raspberry Pi HAT
CM4 Industrial上提供了40-PIN GPIO, 兼容Raspberry Pi HAT, 支持各种标准Raspberry Pi的扩展配件, 客户可以通过此40-PIN扩展更多的隔离IO, CAN总线支持, POE支持等等.
注意
请注意, 40-PIN GPIO上有一些管脚已被配置为板载其他功能, 请注意是否会产生冲突.
# 5V@1A 直流电源输出
J72, 在PCBA正面, 靠近DSI1 FPC连接器, 提供5V@1A的直流输出. 丝印上有标5V, GND. 可用于给Raspberry Pi 7寸官方触摸屏供电, 也可用于其他负载.