IP Library Granted Patent US 11,860,730
Granted Patent B2
US 11,860,730 · App. 17/542,906 · Granted Jan 2, 2024

Low-overhead, bidirectional error checking for a serial peripheral interface

Inventors: Kaushik Kannan (Mountain View, CA); David Sobel (Los Altos, CA)
Assignee: Waymo LLC
G06F11/1004G06F11/0772G06F11/3031G06F13/4291
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,860,730
App. No.
17/542,906
Granted
Jan 2, 2024
Kind
B2
Abstract

Example embodiments relate to low-overhead, bidirectional error checking for a serial peripheral interface. An example device includes an integrated circuit. The device also includes a serial peripheral interface (SPI) with a Master In Slave Out (MISO) channel and a Master Out Slave In (MOSI) channel. The MOSI channel is configured to receive a write address, payload data, and a forward error-checking code usable to identify data corruption within the write address or the payload data. The integrated circuit is configured to calculate and provide a reverse error-checking code usable to identify data corruption within the write address or the payload data. Additionally, the integrated circuit is configured to compare the forward error-checking code to the reverse error-checking code. Further, the integrated circuit is configured to write, to the write address if the forward error-checking code matches the reverse error-checking code, the payload data.

Claims (72)

1. A device comprising:

an integrated circuit; and

a serial peripheral interface (SPI) communicatively coupled to the integrated circuit,

wherein the SPI comprises a Master In Slave Out (MISO) channel and a Master Out Slave In (MOSI) channel,

wherein the MOSI channel is configured to:

receive a write address within the integrated circuit to be written to;

receive payload data to be written; and

receive a forward error-checking code usable to identify data corruption within the write address or the payload data, and

wherein the integrated circuit is configured to:

calculate a reverse error-checking code based on the received write address and payload data, wherein the reverse error-checking code is usable to identify data corruption within the write address or the payload data;

provide, to the MISO channel, the calculated reverse error-checking code;

compare the forward error-checking code to the reverse error-checking code; and

write, to the write address when the forward error-checking code matches the reverse error-checking code, the payload data.

2. The device of claim 1 ,

wherein the write address is received within a first byte of a first data packet by the MOSI channel,

wherein the payload data is received within a second byte and a third byte of the first data packet by the MOSI channel,

wherein the forward error-checking code is received within a fourth byte of the first data packet by the MOSI channel, and

wherein the reverse error-checking code is provided within a first byte of a second data packet to the MISO channel.

3. The device of claim 1 ,

wherein the device is a laser driver within a lidar device that comprises a plurality of light emitters,

wherein the payload data comprises data usable to control the emission of the plurality of light emitters, and

wherein the payload data comprises a firing selection of a subset of the plurality of light emitters, a charging voltage or charging current for capacitors used to fire one or more of the plurality of light emitters, a firing time for one or more of the plurality of the light emitters, or a firing power used to fire one or more of the plurality of light emitters.

4. The device of claim 3 , wherein the lidar device is used for object detection and avoidance within an autonomous vehicle.

5. The device of claim 1 , wherein the integrated circuit is further configured to calculate the reverse error-checking code while the write address is being received by the MOSI channel or while the payload data is being received by the MOSI channel.

6. The device of claim 1 , wherein the forward error-checking code or the reverse error-checking code comprises a cyclic redundancy check based on a 9-bit polynomial.

7. The device of claim 6 , wherein the cyclic redundancy check is based on the 1-Wire 0x31 polynomial.

8. The device of claim 1 ,

wherein the SPI is a four-wire interface, and

wherein the SPI further comprises a Slave Select channel (SS N ) and a clock channel (SCLK).

9. The device of claim 1 ,

wherein the MOSI channel is further configured to receive a read address within the integrated circuit to be read from, and

wherein the integrated circuit is further configured to:

calculate a secondary reverse error-checking code based on the received read address and secondary payload data, wherein the secondary payload data is stored within the integrated circuit at the read address, and wherein the secondary reverse error-checking code is usable to identify data corruption within the read address or the secondary payload data; and

provide, to the MISO channel, the secondary payload data read and the secondary reverse error-checking code.

10. The device of claim 1 , wherein the MOSI channel is further configured to receive an indication of whether a read routine or a write routine is to be performed by the integrated circuit.

11. The device of claim 10 , wherein the calculated reverse error-checking code does not match the forward error-checking code when a bit-flip has occurred in the indication of whether a read routine or a write routine is to be performed by the integrated circuit.

12. A method comprising:

receiving, by a Master Out Slave In (MOSI) channel of a serial peripheral interface (SPI) of a subcontroller, a write address within an integrated circuit of the subcontroller to be written to;

receiving, by the MOSI channel, payload data to be written;

receiving, by the MOSI channel, a forward error-checking code usable to identify data corruption within the write address or the payload data;

calculating, by the integrated circuit, a reverse error-checking code based on the received write address and payload data, wherein the reverse error-checking code is usable to identify data corruption within the write address or the payload data;

providing, to a Master In Slave Out (MISO) channel of the SPI by the integrated circuit, the calculated reverse error-checking code;

comparing, by the integrated circuit, the forward error-checking code to the reverse error-checking code; and

writing, to the write address by the integrated circuit when the forward error-checking code matches the reverse error-checking code, the payload data.

13. A system comprising:

a controller; and

a subcontroller comprising an integrated circuit, wherein the subcontroller and the controller are communicatively coupled over a serial peripheral interface (SPI) comprising a Master In Slave Out (MISO) channel and a Master Out Slave In (MOSI) channel, and

wherein the MOSI channel is configured to:

receive a write address within the integrated circuit to be written to;

receive payload data to be written; and

receive a forward error-checking code usable to identify data corruption within the write address or the payload data, and

wherein the integrated circuit is configured to:

calculate a reverse error-checking code based on the received write address and payload data, wherein the reverse error-checking code is usable to identify data corruption within the write address or the payload data;

provide, to the MISO channel, the calculated reverse error-checking code;

compare the forward error-checking code to the reverse error-checking code; and

write, to the write address when the forward error-checking code matches the reverse error-checking code, the payload data.

14. The system of claim 13 ,

wherein the write address is received within a first byte of a first data packet by the MOSI channel,

wherein the payload data is received within a second byte and a third byte of the first data packet by the MOSI channel,

wherein the forward error-checking code is received within a fourth byte of the first data packet by the MOSI channel, and

wherein the reverse error-checking code is provided within a first byte of a second data packet to the MISO channel.

15. The system of claim 13 ,

wherein the subcontroller is a laser driver within a lidar device that comprises a plurality of light emitters,

wherein the payload data comprises data usable to control the emission of the plurality of light emitters, and

wherein the payload data comprises a firing selection of a subset of the plurality of light emitters, a charging voltage or charging current for capacitors used to fire one or more of the plurality of light emitters, a firing time for one or more of the plurality of the light emitters, or a firing power used to fire one or more of the plurality of light emitters.

16. The system of claim 15 , wherein the lidar device is used for object detection and avoidance within an autonomous vehicle.

17. The system of claim 13 , wherein the integrated circuit is further configured to calculate the reverse error-checking code while the write address is being received by the MOSI channel or while the payload data is being received by the MOSI channel.

18. The system of claim 13 , wherein the forward error-checking code or the reverse error-checking code comprises a cyclic redundancy check based on a 9-bit polynomial.

19. The system of claim 18 , wherein the cyclic redundancy check is based on the 1-Wire 0x31 polynomial.

20. The system of claim 13 ,

wherein the SPI is a four-wire interface, and

wherein the SPI further comprises a Slave Select channel (SS N ) and a clock channel (SCLK).

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 6, 2021
From: KANNAN, KAUSHIK; SOBEL, DAVID
To: WAYMO LLC
Reel/Frame 058307/0483 →
Continuity (1)
Related Publication 20230176944A1 · Jun 8, 2023