问答

汇集网友智慧,解决技术难题

NUANXIXIA

TA的家园币:21  

  • 模拟IIC GD32

    GD32F427VK软件模拟IIC,但是IIC总会有收不到ACK的情况,/**description:本文件为模拟I2C驱动代码*version:1.0*ChangeLogs:*DateAuthorNotes*2020-01-17yinacreate**/#include"audio_i2c.h"#include"audio_port_i2c.h"#include"systick.h"/***********************************************************@NOTE产生IIC起始信号*@param*@return*********************************************************/voidaudio_iic_start(void){audio_i2c_sda_out();//sda线输出audio_i2c_sda_set(1);audio_i2c_scl_set(1);delay_1us(4);audio_i2c_sda_set(0);//START:whenCLKishigh,DATAchangeformhightolowdelay_1us(4);audio_i2c_scl_set(0);//钳住I2C总线,准备发送或接收数据}/***********************************************************@note产生IIC停止信号*@param*@return*********************************************************/voidaudio_iic_stop(void){audio_i2c_sda_out();//sda线输出audio_i2c_scl_set(0);audio_i2c_sda_set(0);//STOP:whenCLKishighDATAchangeformlowtohighdelay_1us(4);audio_i2c_scl_set(1);audio_i2c_sda_set(1);//发送I2C总线结束信号delay_1us(4);}/***********************************************************@note等待应答信号到来*@param*@return1:接收应答失败0:接收应答成功*********************************************************/uint8_taudio_iic_wait_ack(void){uint8_tucErrTime=0;audio_i2c_sda_in();//SDA设置为输入audio_i2c_sda_set(1);delay_1us(1);audio_i2c_scl_set(1);delay_1us(1);while(audio_i2c_sda_read()){ucErrTime++;if(ucErrTime>250){audio_iic_stop();return1;}}audio_i2c_scl_set(0);//时钟输出0audio_i2c_sda_out();return0;}/***********************************************************@note产生ACK应答信号*@param*@return*******************

    2022-09-14 0