This commit is contained in:
yelvlab 2024-12-28 18:40:46 +08:00
parent ca970e5e68
commit 1a6219f2b5
3 changed files with 21 additions and 15 deletions

View File

@ -22,16 +22,22 @@
/******************************************************************************/ /******************************************************************************/
void i2c_delay(void); void soft_i2c_delay(void);
void soft_i2c_config(void); void soft_i2c_config(void);
void soft_i2c_start(void); void soft_i2c_start(void);
void soft_i2c_stop(void); void soft_i2c_stop(void);
void soft_i2c_send_ack(void); void soft_i2c_send_ack(void);
void soft_i2c_send_nack(void); void soft_i2c_send_nack(void);
uint8_t soft_i2c_wait_ack(void); uint8_t soft_i2c_wait_ack(void);
void soft_i2c_send_byte(uint8_t data); void soft_i2c_send_byte(uint8_t data);
uint8_t soft_i2c_receive_byte(uint8_t ack); uint8_t soft_i2c_receive_byte(uint8_t ack);
#endif //SOFT_I2C_H #endif //SOFT_I2C_H

View File

@ -65,36 +65,36 @@ int main(void) {
soft_i2c_config(); soft_i2c_config();
printf("111\n"); printf("111\n");
i2c_start(); soft_i2c_start();
i2c_send_byte((0x2B << 1)); soft_i2c_send_byte((0x2B << 1));
if (!i2c_wait_ack()) if (!soft_i2c_wait_ack())
{ {
printf("NACK\n"); printf("NACK\n");
} }
i2c_send_byte(0x7E); soft_i2c_send_byte(0x7E);
if (!i2c_wait_ack()) if (!soft_i2c_wait_ack())
{ {
printf("NACK\n"); printf("NACK\n");
} }
i2c_delay(); soft_i2c_delay();
i2c_start(); soft_i2c_start();
i2c_send_byte((0x2B << 1) + 1); soft_i2c_send_byte((0x2B << 1) + 1);
if (!i2c_wait_ack()) if (!soft_i2c_wait_ack())
{ {
printf("NACK\n"); printf("NACK\n");
} }
i2c_delay(); soft_i2c_delay();
data[0] = i2c_receive_byte(1); data[0] = soft_i2c_receive_byte(1);
data[1] = i2c_receive_byte(0); data[1] = soft_i2c_receive_byte(0);
delay_us(5); delay_us(5);
i2c_stop(); soft_i2c_stop();
printf("0x%x 0x%x\n", data[0], data[1]); printf("0x%x 0x%x\n", data[0], data[1]);

View File

@ -10,7 +10,7 @@
\param[out] none \param[out] none
\retval none \retval none
*/ */
void i2c_delay(void) { void soft_i2c_delay(void) {
delay_us(20); // Adjust delay as needed delay_us(20); // Adjust delay as needed
/* delay to freq /* delay to freq
* 20KHz: delay_us(20); * 20KHz: delay_us(20);