[问题] stm32f103 i2c io软件模拟

楼主: farmer301758 (农伕)   2019-01-31 17:32:47
大家好
最进需要停整一颗IC TC358870为I2C接口
需要写入大量资料到Register上
这边采用stm32f103zet6想用软件模拟的方式
模拟i2c的动作,硬件好像有BUG?
但程序都会死在
u8 I2C_Wait_Ack(void)
{
u8 ucErrTime=0;
SDA_IN(); //SDA?????
GPIO_SetBits(GPIOA,PIN_SDA);
delay_us(5);
GPIO_SetBits(GPIOA,PIN_SCL);
delay_us(5);
while(GPIO_ReadInputDataBit(GPIOA,PIN_SDA))
{
ucErrTime++;
if(ucErrTime>250)
{
I2C_Stop();//程序都会因为等不到SDA被拉低
return 1;
}
}
GPIO_ResetBits(GPIOA, PIN_SCL);
return 0;
}
过程中换了好几个写法,都大同小异,但始终不能使用
想询问一下如何更正呢?
附上Toshiba自动i2c调整register宏与两个版本
有试过24C02写入一个byte
读出后都失败(都是pull high255...)
TC358870 产生:https://drive.google.com/open?id=1-KpAAaMwxf-c2vUkSAXTAMkdKURfoXQD
STM32版本1:https://drive.google.com/open?id=1qSmL1oUkWLnYyrb_UpP3hqNb4SUlikMa
STM32版本2:https://drive.google.com/open?id=1hHDdhM1cy1ETesdyB0aKMMM0t6qRZfsB
工程模板是用STM32F103彦霖

Links booklink

Contact Us: admin [ a t ] ucptt.com