@@ -41,16 +41,15 @@ Vl53SpiTransport<SpiMaster, Cs, Lpn, VL53LMZ_COMMS_CHUNK_SIZE>::writeMulti(uint1
4141
4242 const uint16_t temp = RegisterAddress + position;
4343
44- tx_buffer[0 ] = SPI_WRITE_MASK (temp) >> 8 ;
45- tx_buffer[1 ] = SPI_WRITE_MASK (temp) & 0xFF ;
46-
47- for (uint32_t i = 0 ; i < data_size; i++) { tx_buffer[i + 2 ] = p_values[position + i]; }
48-
49- data_size += 2 ;
44+ uint8_t addr_buffer[2 ];
45+ addr_buffer[0 ] = SPI_WRITE_MASK (temp) >> 8 ;
46+ addr_buffer[1 ] = SPI_WRITE_MASK (temp) & 0xFF ;
5047
5148 modm::this_fiber::poll ([&] { return this ->acquireMaster (); });
5249 Cs::reset ();
53- SpiMaster::transfer (&tx_buffer[0 ], nullptr , data_size);
50+ // SpiMaster::transfer(&tx_buffer[0], nullptr, data_size);
51+ SpiMaster::transfer (addr_buffer, nullptr , sizeof (addr_buffer));
52+ SpiMaster::transfer (&p_values[position], nullptr , data_size);
5453
5554 if (this ->releaseMaster ()) { Cs::set (); }
5655 }
@@ -82,12 +81,13 @@ Vl53SpiTransport<SpiMaster, Cs, Lpn, VL53LMZ_COMMS_CHUNK_SIZE>::readMulti(uint16
8281
8382 const uint16_t temp = RegisterAddress + position;
8483
85- tx_buffer[0 ] = SPI_READ_MASK (temp) >> 8 ;
86- tx_buffer[1 ] = SPI_READ_MASK (temp) & 0xFF ;
84+ uint8_t addr_buffer[2 ];
85+ addr_buffer[0 ] = SPI_WRITE_MASK (temp) >> 8 ;
86+ addr_buffer[1 ] = SPI_WRITE_MASK (temp) & 0xFF ;
8787
8888 modm::this_fiber::poll ([&] { return this ->acquireMaster (); });
8989 Cs::reset ();
90- SpiMaster::transfer (&tx_buffer [0 ], &rx_buffer[0 ], data_size + 2 );
90+ SpiMaster::transfer (&addr_buffer [0 ], &rx_buffer[0 ], data_size + 2 );
9191 // SpiMaster::transfer(nullptr, p_values + position, data_size);
9292 if (this ->releaseMaster ()) { Cs::set (); }
9393
@@ -155,7 +155,7 @@ Vl53I2cTransport<I2cMaster, Lpn>::writeByte(uint16_t RegisterAddress, uint8_t va
155155 data_write[0 ] = (RegisterAddress >> 8 ) & 0xFF ;
156156 data_write[1 ] = RegisterAddress & 0xFF ;
157157 data_write[2 ] = value & 0xFF ;
158-
158+
159159 const auto status = I2cDevice<I2cMaster>::write (&data_write[0 ], 3 );
160160 return static_cast <uint8_t >(not status);
161161}
0 commit comments