@@ -9,6 +9,8 @@ use embassy_imxrt::{bind_interrupts, i2c, peripherals};
9
9
use embassy_time:: Timer ;
10
10
use embedded_hal_async:: i2c:: I2c ;
11
11
12
+ const NACK_ADDR : u8 = 0x07 ;
13
+
12
14
const ACC_ADDR : u8 = 0x1E ;
13
15
14
16
const ACC_ID_REG : u8 = 0x0D ;
@@ -94,7 +96,33 @@ async fn main(_spawner: Spawner) {
94
96
)
95
97
. unwrap ( ) ;
96
98
97
- // Read WHO_AM_I register, 0x0D to get value 0xC7 (1100 0111)
99
+ info ! ( "i2c example - write nack check" ) ;
100
+ let result = i2c. write ( NACK_ADDR , & [ ACC_ID_REG ] ) . await ;
101
+ if result. is_err_and ( |e| e == i2c:: TransferError :: AddressNack . into ( ) ) {
102
+ info ! ( "i2c example - write nack check gets the right error" ) ;
103
+ } else {
104
+ error ! ( "i2c example - write nack check error did not get the error {}" , result) ;
105
+ }
106
+
107
+ info ! ( "i2c example - read nack check" ) ;
108
+ let mut reg = [ 0u8 ; 1 ] ;
109
+ let result = i2c. read ( NACK_ADDR , & mut reg) . await ;
110
+ if result. is_err_and ( |e| e == i2c:: TransferError :: AddressNack . into ( ) ) {
111
+ info ! ( "i2c example - write nack check gets the right error" ) ;
112
+ } else {
113
+ error ! ( "i2c example - write nack check error did not get the error {}" , result) ;
114
+ }
115
+
116
+ info ! ( "i2c example - write_read nack check" ) ;
117
+ let mut reg = [ 0u8 ; 1 ] ;
118
+ reg[ 0 ] = 0xAA ;
119
+ let result = i2c. write_read ( NACK_ADDR , & [ ACC_ID_REG ] , & mut reg) . await ;
120
+ if result. is_err_and ( |e| e == i2c:: TransferError :: AddressNack . into ( ) ) {
121
+ info ! ( "i2c example - write nack check gets the right error" ) ;
122
+ } else {
123
+ error ! ( "i2c example - write nack check error did not get the error {}" , result) ;
124
+ }
125
+
98
126
info ! ( "i2c example - ACC WHO_AM_I register check" ) ;
99
127
let mut reg = [ 0u8 ; 1 ] ;
100
128
reg[ 0 ] = 0xAA ;
0 commit comments