Tôi hiện đang làm việc trên một dự án E2C EEPROM bằng cách sử dụng bit-banging để điều khiển các dòng SDA và SCL.
Hàm đọc của tôi hoạt động tốt nhưng bất cứ khi nào tôi viết bất kỳ byte nào có chữ "1" hàng đầu, tôi luôn đọc lại FF; ngay cả khi byte đã được lập trình với cái gì khác trước đó. Dẫn đầu "0" là hoàn hảo. Nó không phải là thói quen đọc của tôi; như tôi có thể thấy trên phạm vi nó trả về FF.
Tôi đang tìm kiếm gợi ý về lý do tại sao điều này có thể được. Có bất kỳ điều gì rõ ràng tôi có thể bỏ lỡ có thể gây ra vấn đề? [Tôi không thể đăng mã - công ty bảo mật ... :(]
Mỗi dạng sóng tôi nhìn vào đều đáp ứng chính xác thông số kỹ thuật. Tôi đang tách EEPROM. Pull up của tôi là 2.2k vì vậy trong spec. Tôi đang ở mức khoảng 500 Hz trong nguyên mẫu này. Con chip đang gửi ACK đến từng byte của tôi để nó nhận ra chúng. Nhưng nó không hoạt động ...
Tôi đang sử dụng Microchip 24LC256 .
Thuật toán viết đơn giản hóa cho một byte:
wait
SDA low
SCL low
wait
for each bit
if bit is set: SDA high
if bit is unset: SDA low
wait
SCL high
wait
wait
SCL low
wait
wait
SDA high
SCL high
wait
wait
check ACK status
SDA low
SCL low
wait
return ACK status
Thuật toán đọc đơn giản hóa cho một byte:
wait
SCL low
SDA high
for each bit (8 bits)
SCL high
wait
wait
SCL low
wait
check and store received bit
wait
do a NACK or ACK depending on if it is the last byte