7 个版本 (破坏性)
0.8.0 | 2024 年 3 月 16 日 |
---|---|
0.7.0 | 2023 年 9 月 1 日 |
0.6.0 | 2023 年 2 月 18 日 |
0.5.0 | 2022 年 12 月 11 日 |
0.1.0 | 2022 年 1 月 3 日 |
#1857 在 硬件支持
每月 106 次下载
在 rp-pico 中使用
33KB
780 行
I2C PIO
使用 RP2040 PIO 外设实现 I2C HAL。
有关示例,请参阅 rp-hal
。
lib.rs
:
使用 RP2040 PIO 块实现 I2C 控制器。
此实现基于 c-sdk 的示例,有以下变化
- 它使用 GPIO 上的 WAIT 处理时钟拉伸,无需将 SCL 设置为 SDA+1。
- 它保持 autopush 启用并在写入操作期间清空 RX FIFO。
通用命令字描述
TX 编码:| 15:10 | 9 | 8:1 | 0 | | Instr | Final | Data | NAK |
如果 Instr 的值为 n > 0,则此 FIFO 字符没有数据负载,下一个 n + 1 个字将作为指令执行。否则,移出 8 位数据,然后是 ACK 位。
Instr 机制允许处理器编程停止/开始/repstart 序列,然后在数据流的定义点上由状态机执行。
"Final" 字段应设置为传输中的最后一个字节。这告诉状态机忽略 NAK:如果此字段未设置,则任何 NAK 都会导致状态机停止并中断。
应启用 Autopull,阈值为 16。应启用 Autopush,阈值为 8。应使用半字写入访问 TX FIFO,以确保数据立即在 OSR 中可用。
引脚映射
- 输入引脚 0 是 SDA
- 跳线引脚是 SDA
- 侧置引脚 0 是 SCL
- 设置引脚 0 是 SDA
- OUT 引脚 0 是 SDA
系统 IO 控制中应将 OE 输出取反!(此程序中可以执行取反,但代价是 2 条指令:1 条用于取反,1 条用于处理 MOV 对 TX 位移计数器的副作用。)
依赖项
~11–20MB
~283K SLoC