问答

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

zhczlzhang

TA的家园币:1197  

  • 关于GD32f103读取AT24C02总是读不准的疑问

    如题所示,我第一次使用GD32f103代替stm32,在IIC读取24C02这里出问题了,代码是在stm32上面验证过了,没有问题。为了可移植行,就没有使用GD32的固件库IIC,而是硬件模拟IIC。但是在GD32上面时,就是存储进去是0x01,读出来是0xc0,写入时0x07,读出来是0x08,写入时0x55,读出来是0x56.调试了半天,延时之类的都试过了,感觉还是时序的问题,但是手上没有示波器,只能靠猜,请大家帮忙。IIC_Init();delay_1ms(1000);AT24C02_SaveROWSta(AT24C02_row1,0x01);delay_1ms(1000);//temp=AT24C02_ReadOneByte(AT24C02_row1);send_485(AT24C02_ReadOneByte(AT24C02_row1),1);//以上是在main中的代码voidAT24C02_SaveROWSta(uint8_trow,uint8_tsta1){AT24C02_WriteOneByte(0,0x55);//24C02地址0写入0x55AT24C02_WriteOneByte(row,sta1);//24C02地址写入保存的行列的状态}voidAT24C02_WriteOneByte(unsignedcharWriteAddr,unsignedcharDataToWrite){IIC_Start();//开始信号IIC_Send_Byte(AT24C02_WADDR);//发送器件地址+写操作IIC_Wait_Ack();//等待应答IIC_Send_Byte(WriteAddr);//发送写入数据的目的地址IIC_Wait_Ack();//等待应答IIC_Send_Byte(DataToWrite);//发送要写入的数据IIC_Wait_Ack();//等待应答IIC_Stop();//停止信号Delay_Ms(5);//延迟}unsignedcharAT24C02_ReadOneByte(unsignedcharReadAddr){unsignedcharreceive;//定义一个变量用于保存接收到的数据receive=0;//清除receive,准备接收数据IIC_Start();//IIC开始信号IIC_Send_Byte(AT24C02_WADDR);//发送24c02器件地址+写操作IIC_Wait_Ack();//等待应答IIC_Send_Byte(ReadAddr);//发送需要读数据的地址IIC_Wait_Ack();//等待应答IIC_Start();//IIC开始信号IIC_Send_Byte(AT24C02_RADDR);//发送24c02器件地址+读操作IIC_Wait_Ack();//等待应答receive=IIC_Read_Byte(0);//读一字节数据,保存在receive变量中IIC_Stop();//停止信号Delay_Ms(5);//延迟returnreceiv

    2022-07-26 1
  • 请问TI有模拟前端选型表吗

    我们公司要建立TI的模拟前端选型表,到时候好选型,但是TI上面好像没有关于这方面的选型表,自己收集的总感觉不全。请问TI官方有关于模拟前端的选型表吗?

    TI AFE 模拟前端 模拟

    2021-12-14 0
  • 请问TI有AFE的选型表吗

    我们公司要建立TI的模拟前端选型表,到时候好选型,但是TI上面好像没有关于这方面的选型表,自己收集的总感觉不全。请问TI官方有关于模拟前端的选型表吗?

    TI AFE 模拟前端 选型

    2021-12-14 1