Skip to content

Commit 491269f

Browse files
committed
use 2 i2c busses
1 parent fcb9050 commit 491269f

2 files changed

Lines changed: 36 additions & 12 deletions

File tree

examples/raspberrypi/rp2xxx/src/mlx90640_hottest_point.zig

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ const uart = rp2xxx.uart.instance.num(0);
1313
const uart_tx_pin = gpio.num(0);
1414

1515
var i2c0 = i2c.instance.num(0);
16+
var i2c1 = i2c.instance.num(1);
1617

1718
const pin_config = rp2xxx.pins.GlobalConfiguration{
1819
.GPIO0 = .{ .name = "gpio0", .function = .UART0_TX },
@@ -34,9 +35,9 @@ pub fn main() !void {
3435
.clock = rp2xxx.drivers.clock_device(),
3536
});
3637

37-
try camera.set_refresh_rate(0b100);
38+
try camera.set_refresh_rate(0b101);
3839

39-
const i2c_dd = rp2xxx.drivers.I2C_Datagram_Device.init(i2c0, @enumFromInt(0x3C), null);
40+
const i2c_dd = rp2xxx.drivers.I2C_Datagram_Device.init(i2c1, @enumFromInt(0x3C), null);
4041
const lcd = try display.ssd1306.init(.i2c, i2c_dd, null);
4142
try lcd.clear_screen(false);
4243

@@ -57,7 +58,7 @@ pub fn main() !void {
5758
draw_crosshair(&fb, pos.x, pos.y);
5859

5960
try lcd.write_full_display(fb.bit_stream());
60-
time.sleep_ms(100);
61+
time.sleep_ms(50);
6162
}
6263
}
6364

@@ -102,13 +103,24 @@ fn init() !void {
102103
});
103104

104105
i2c0.apply(i2c.Config{ .clock_config = rp2xxx.clock_config });
106+
i2c1.apply(i2c.Config{ .clock_config = rp2xxx.clock_config });
105107

106108
rp2xxx.uart.init_logger(uart);
107109
_ = pin_config.apply();
108110

109-
const scl_pin = gpio.num(5);
110-
const sda_pin = gpio.num(4);
111-
inline for (&.{ scl_pin, sda_pin }) |pin| {
111+
// i2c0: camera (GPIO4=SDA, GPIO5=SCL)
112+
const i2c0_scl = gpio.num(5);
113+
const i2c0_sda = gpio.num(4);
114+
inline for (&.{ i2c0_scl, i2c0_sda }) |pin| {
115+
pin.set_slew_rate(.slow);
116+
pin.set_schmitt_trigger_enabled(true);
117+
pin.set_function(.i2c);
118+
}
119+
120+
// i2c1: display (GPIO2=SDA, GPIO3=SCL)
121+
const i2c1_scl = gpio.num(3);
122+
const i2c1_sda = gpio.num(2);
123+
inline for (&.{ i2c1_scl, i2c1_sda }) |pin| {
112124
pin.set_slew_rate(.slow);
113125
pin.set_schmitt_trigger_enabled(true);
114126
pin.set_function(.i2c);

examples/raspberrypi/rp2xxx/src/mlx90640_image.zig

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ const uart = rp2xxx.uart.instance.num(0);
1313
const uart_tx_pin = gpio.num(0);
1414

1515
var i2c0 = i2c.instance.num(0);
16+
var i2c1 = i2c.instance.num(1);
1617

1718
const pin_config = rp2xxx.pins.GlobalConfiguration{
1819
.GPIO0 = .{ .name = "gpio0", .function = .UART0_TX },
@@ -34,9 +35,9 @@ pub fn main() !void {
3435
.clock = rp2xxx.drivers.clock_device(),
3536
});
3637

37-
try camera.set_refresh_rate(0b100);
38+
try camera.set_refresh_rate(0b101);
3839

39-
const i2c_dd = rp2xxx.drivers.I2C_Datagram_Device.init(i2c0, @enumFromInt(0x3C), null);
40+
const i2c_dd = rp2xxx.drivers.I2C_Datagram_Device.init(i2c1, @enumFromInt(0x3C), null);
4041
const lcd = try display.ssd1306.init(.i2c, i2c_dd, null);
4142
try lcd.clear_screen(false);
4243

@@ -57,7 +58,7 @@ pub fn main() !void {
5758
scale_128_x_64(&fb, &image, threshold);
5859

5960
try lcd.write_full_display(fb.bit_stream());
60-
time.sleep_ms(100);
61+
time.sleep_ms(50);
6162
}
6263
}
6364

@@ -95,13 +96,24 @@ fn init() !void {
9596
});
9697

9798
i2c0.apply(i2c.Config{ .clock_config = rp2xxx.clock_config });
99+
i2c1.apply(i2c.Config{ .clock_config = rp2xxx.clock_config });
98100

99101
rp2xxx.uart.init_logger(uart);
100102
_ = pin_config.apply();
101103

102-
const scl_pin = gpio.num(5);
103-
const sda_pin = gpio.num(4);
104-
inline for (&.{ scl_pin, sda_pin }) |pin| {
104+
// i2c0: camera (GPIO4=SDA, GPIO5=SCL)
105+
const i2c0_scl = gpio.num(5);
106+
const i2c0_sda = gpio.num(4);
107+
inline for (&.{ i2c0_scl, i2c0_sda }) |pin| {
108+
pin.set_slew_rate(.slow);
109+
pin.set_schmitt_trigger_enabled(true);
110+
pin.set_function(.i2c);
111+
}
112+
113+
// i2c1: display (GPIO2=SDA, GPIO3=SCL)
114+
const i2c1_scl = gpio.num(3);
115+
const i2c1_sda = gpio.num(2);
116+
inline for (&.{ i2c1_scl, i2c1_sda }) |pin| {
105117
pin.set_slew_rate(.slow);
106118
pin.set_schmitt_trigger_enabled(true);
107119
pin.set_function(.i2c);

0 commit comments

Comments
 (0)