1 个不稳定版本
0.2.0 | 2023年7月15日 |
---|---|
0.1.0 |
|
#1829 在 硬件支持
17KB
Neotron-BMC-Commands
与 Neotron 板管理控制器 (NBMC) 通信的命令代码。
系统寄存器
地址 | 名称 | 类型 | 包含 | 长度 |
---|---|---|---|---|
0x00 | 协议版本 | RO | NBMC 协议版本,[1, 0, 0] | 3 |
0x01 | 固件版本 | RO | NBMC 固件版本,作为空格填充的 UTF-8 字符串 | 32 |
0x10 | 中断状态 | R/W1C | 当前活跃的中断,作为位掩码。 | 2 |
0x11 | 中断控制 | R/W | 当前启用的中断,作为位掩码。 | 2 |
0x20 | 按钮状态 | RO | 按钮的当前状态 | 1 |
0x21 | 系统温度 | RO | 温度(°C),作为 i8 |
1 |
0x22 | 系统电压(待机 3.3V 供电轨) | RO | 电压(伏特/32),作为 u8 |
1 |
0x23 | 系统电压(主 3.3V 供电轨) | RO | 电压(伏特/32),作为 u8 |
1 |
0x24 | 系统电压(5.0V 供电轨) | RO | 电压(伏特/32),作为 u8 |
1 |
0x25 | 电源控制 | R/W | 启用/禁用电源供应 | 1 |
0x30 | UART 接收/发送缓冲区 | FIFO | 通过 UART 接收/发送的数据 | 最多 64 |
0x31 | UART FIFO 控制 | R/W | UART FIFO 的设置 | 1 |
0x32 | UART 控制 | R/W | UART 的设置 | 1 |
0x33 | UART 状态 | R/W1C | UART 的当前状态 | 1 |
0x34 | UART 波特率 | R/W | UART 波特率(bps),作为 u32le |
4 |
0x40 | PS/2 键盘接收/发送缓冲区 | FIFO | 通过 PS/2 键盘端口接收/发送的数据 | 最多 16 |
0x41 | PS/2 键盘控制 | R/W | PS/2 键盘端口的设置 | 1 |
0x42 | PS/2 键盘状态 | R/W1C | PS/2 键盘端口的当前状态 | 1 |
0x50 | PS/2 鼠标接收/发送缓冲区 | FIFO | 通过 PS/2 鼠标端口接收/发送的数据 | 最多 16 |
0x51 | PS/2 鼠标控制 | R/W | PS/2 鼠标端口的设置 | 1 |
0x52 | PS/2 鼠标状态 | R/W1C | PS/2 鼠标端口的当前状态 | 1 |
0x60 | I²C 接收/发送缓冲区 | FIFO | 通过 I²C 总线接收/发送的数据 | 最多 16 |
0x61 | I²C FIFO 控制 | R/W | I²C FIFO 的设置 | 1 |
0x62 | I²C 控制 | R/W | I²C 总线的设置 | 1 |
0x63 | I²C 状态 | R/W1C | I²C 总线的当前状态 | 1 |
0x64 | I²C 波特率 | R/W | I²C 时钟频率(Hz),作为 u32le |
4 |
0x70 | 扬声器音调持续时间 | R/W | 音符持续时间,单位为10ms(0 = 停止播放) | 1 |
0x71 | 扬声器音调周期(高) | R/W | 音符周期(以48kHz滴答计),MSB | 1 |
0x72 | 扬声器音调周期(低) | R/W | 音符周期(以48kHz滴答计),LSB | 1 |
0x73 | 扬声器音调占空比 | R/W | 扬声器PWM方波的占空比(127 = 50%) | 1 |
寄存器类型有
RO
- 只读寄存器,写入将返回错误R/W
- 可读写寄存器R/W1C
- 读取与通常一样,但在写入时,1位将清除该位位置,0位将被忽略FIFO
- 先入先出缓冲区
地址 0x00 - 协议版本
这个只读寄存器返回支持的协议版本。协议版本包括寄存器的集合,以及这些寄存器字段的意义。在读取任何其他寄存器之前,主机应首先验证它与所交谈的 NBMC 在语义上是兼容的。
这三个字节是 major
,minor
和 patch
。本文件对应于 [1, 0, 0]
(或 v1.0.0)。
地址 0x01 - 固件版本
这个只读寄存器返回NBMC的固件版本,作为UTF-8字符串。寄存器长度始终为32字节,字符串为空格填充。我们还保证固件版本始终小于或等于31字节,因此您也可以将此字符串视为空终止。
官方发布版本将具有以下形式的版本字符串:tags/v1.2.3
。非官方发布版本可能是 heads/develop-dirty
。不推荐您依赖这些格式或尝试解析版本字符串。但是,当报告固件问题时,引用此字符串是有用的。
地址 0x10 - 中断状态
这个8位寄存器指示哪些中断目前是“活动”的。中断将保持“活动”状态,直到向该寄存器写入一个字,其相关位置有一个1位。
位 | 中断 |
---|---|
7 | 电压警报 |
6 | 按钮状态变化 |
5 | UART TX为空 |
4 | UART RX非空 |
3 | I²C TX为空 |
2 | I²C RX非空 |
1 | PS/2鼠标RX非空 |
0 | PS/2键盘RX非空 |
地址 0x11 - 中断控制
这个8位寄存器指示哪些中断目前是“启用”的。IRQ_nHOST信号是电平中断,只要中断控制寄存器与中断状态寄存器AND的结果非零,它就会处于活动状态(低)。
位与中断状态寄存器中的位顺序相同。
地址 0x20 - 按钮状态
这个8位寄存器指示电源按钮的状态。
请注意,如果电源按钮按下3秒钟,系统将立即关机,不管主机做什么。
另外,重置按钮也无法采样 - 按下重置按钮将立即激活系统复位线,重新启动主机。
位 | 意义 |
---|---|
7-1 | 保留供将来使用 |
0 | 电源按钮:0 = 正常,1 = 按下 |
地址 0x21 - 系统温度
这个8位寄存器提供当前系统温度(°C),由STM32内部温度传感器测量。它大约每秒更新一次。
地址 0x22 - 系统电压(待机 3.3V 电源轨)
这个八位寄存器以 1/32 伏特为单位提供当前 3.3V 电源轨电压。大约每秒更新一次。105(3.28V)到 106(3.31V)是正常值。当值超过 3.63V(116)或低于 2.97V(95)时,将引发中断。
地址 0x23 - 系统电压(主 3.3V 电源轨)
这个八位寄存器以 1/32 伏特为单位提供当前 3.3V 电源轨电压。大约每秒更新一次。105(3.28V)到 106(3.31V)是正常值。当值超过 3.63V(116)或低于 2.97V(95)时,将引发中断。
地址 0x24 - 系统电压(5.0V 电源轨)
此八位寄存器以 1/32 伏特为单位提供当前 3.3V 电源轨电压。大约每秒更新一次。160(5.00V)是正常值。当值超过 5.5V(176)或低于 4.5V(144)时,将引发中断。
地址 0x25 - 电源控制
此八位寄存器控制主 DC/DC 电源单元。如果主机希望关机,应禁用 DC/DC 电源(在此处写入零)。
位 | 意义 |
---|---|
7-1 | 保留供将来使用 |
0 | DC/DC 控制:0 = 关,1 = 开 |
地址 0x30 - UART 接收/发送缓冲区
待办事项
地址 0x31 - UART FIFO 控制
待办事项
地址 0x32 - UART 控制
待办事项
地址 0x33 - UART 状态
待办事项
地址 0x34 - UART 波特率
待办事项
地址 0x40 - PS/2 键盘接收/发送缓冲区
待办事项
地址 0x41 - PS/2 键盘控制
待办事项
地址 0x42 - PS/2 键盘状态
待办事项
地址 0x50 - PS/2 鼠标接收/发送缓冲区
待办事项
地址 0x51 - PS/2 鼠标控制
待办事项
地址 0x52 - PS/2 鼠标状态
待办事项
地址 0x60 - I²C 接收/发送缓冲区
待办事项
地址 0x61 - I²C FIFO 控制
待办事项
地址 0x62 - I²C 控制
待办事项
地址 0x63 - I²C 状态
待办事项
地址 0x64 - I²C 波特率
待办事项
地址 0x70 - 扬声器音调持续时间
设置要播放的音调持续时间,并开始播放音调。您应该在设置此寄存器之前设置其他三个寄存器(如果需要)。
无法知道音调何时结束;主机应跟踪设置的持续时间并等待适当的时间。
地址 0x71 - 扬声器音调周期(高)
设置音调周期的最高 8 位。这是频率的倒数,以 48 kHz 单位表示。48000 除以 440 等于 109 等于 0x006D 将给出音乐会音高的 A(440 Hz)。将此值分别写入高寄存器 0x00 和低寄存器 0x6D。
地址 0x72 - 扬声器音调周期(低)
设置音调周期的最低 8 位。请参阅“扬声器音调周期(高)”以获取详细信息。
地址 0x73 - 扬声器音调占空比
设置扬声器音调的占空比。127 的值为 50:50(方波)。
许可
此代码根据蓝橡树模型许可 1.0.0 许可。请参阅
我们选择此许可的目的是允许此代码在开源和商业许可产品中自由重用。
依赖项
~1.5MB
~35K SLoC