1 个不稳定版本

0.2.0 2023年7月15日
0.1.0 2023年7月15日

#1829硬件支持

BlueOak-1.0.0

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 在语义上是兼容的。

这三个字节是 majorminorpatch。本文件对应于 [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