FINCHI2CEDADS How to Start
Description
Our communication busses will use a number of protocols, including I2C: Electrical System Diagram. I2C, unlike CAN, doesn’t have any built in error correct or detection. Therefore, the burden is placed on the user to know if the data they sent wasn’t received correctly.
We want to research and pick a design for either error correction or detection, implement it in C, and validate it.
This will be done on a laptop, using 3 C functions. One will create a message to send by filling the values of a struct. It will also add the necessary data to the message to support the chosen error detection or correction method. This will be passed to the 2nd function, which will randomly flip one (or more) of the bits in the data struct. It will then pass it to the third function, that will detect whether an error has occurred, and either notify the user, or correct (depending on which design is chosen).
Tasks
- [ ] Research error correction and detection methods for I2C.
- [ ] Due January 27, 2024. Present to @Khalil Damouni and @Eesa Aamer, mentioning the strengths and weaknesses of each option.
- [ ] Create the test bench in C of the 3 functions. Error correction and detection not necessary yet.
- [ ] Implement the chosen method and verify it works.
This will require a strong understanding of bitwise operations in C. Please make sure you understand how they work, and experiment a little.
Notes
Fill in your work and notes here.
- Tentative requirements:
- ≅100% final data integrity
- Capable of detecting or correcting any theoretical BER (bit error rate) in any theoretical packet size
- Capable of detecting errors on packets sent from 100 kbit/s to 5 mbit/s
- Capable of recognizing whether a packet is corrupted to the extent that it should be discarded and retransmitted
- Capable of correcting single, multiple, and burst errors under a threshold
- Capable of performing final verification on decoded/encoded(tbd) packet
Error Detection:
- [ ] Error Detection Methods + Pseudocode
- [ ] Learn C bit-wise operations
- [ ] Learn C structs
- [ ] Learn C Pointers (Super super important)
- [ ] Let Khalil know if you want some tutorials.