你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F030F4 TSSOP20 I2C调试问题

[复制链接]
312494845 提问时间:2014-3-2 06:19 /
 在I2C调试过程中遇到问题

运行到I2C_GenerateSTART(I2C1, ENABLE); 就会出现上图波形
之后的发送数据反而没有任何信号,
void I2C1_init()
{
        GPIO_InitTypeDef GPIO_InitStructure;
        I2C_InitTypeDef I2C_InitStructure;
        /* Configure the I2C clock source. The clock is derived from the HSI */
  RCC_I2CCLKConfig(RCC_I2C1CLK_SYSCLK);       
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE);        //Enable I2C1 Clock
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE);                //Enable GPIOA Clock
        //RCC_AHBPeriphClockCmd(RCC_AHBPeriph_SRAM,ENABLE);                        //Enable SRAM Clock       
 
        //GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_4);                //Connect PA9 to I2C1_SCL
        //GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_4);                //Connect PA10 to I2C1_SDA
        //Config Pins
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 |GPIO_Pin_10;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_4);                //Connect PA9 to I2C1_SCL
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_4);                //Connect PA10 to I2C1_SDA
 
        //Config I2C1
        I2C_DeInit(I2C1);
        I2C_Cmd(I2C1, DISABLE);
        I2C_InitStructure.I2C_AnalogFilter = I2C_AnalogFilter_Disable;
        I2C_InitStructure.I2C_DigitalFilter = 0x00;
        I2C_InitStructure.I2C_OwnAddress1 = 0x68;
        I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
        I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
        I2C_InitStructure.I2C_Timing = 0x10815E89;        //Master 100khz 48Mhz A_Filter_off R_time=F_time=100ns
        //I2C_InitStructure.I2C_Timing = 0x00702F3E;        //Master 400khz 48Mhz A_Filter_off R_time=F_time=50ns
        I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
        I2C_Cmd(I2C1, ENABLE);
        I2C_Init(I2C1, &I2C_InitStructure);
       
        //I2C_AcknowledgeConfig(I2C1,ENABLE);
        //I2C_Cmd(I2C1, ENABLE);
}
 
int i2c_read(unsigned char slave_addr, unsigned char reg_addr,unsigned char length, unsigned char *data)
{
       
        while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY) != RESET);        // Test on BUSY Flag 
        //I2C_GenerateSTART(I2C1, ENABLE);
        I2C_GenerateSTART(I2C1, ENABLE); 
  //while(I2C_GetFlagStatus(I2C1, I2C_FLAG_TXIS) == RESET);

  I2C_SendData(I2C1,(slave_addr
收藏 评论8 发布时间:2014-3-2 06:19

举报

8个回答
fengye5340 回答时间:2014-3-2 14:32:09

RE:STM32F030F4 TSSOP20 I2C调试问题

STM32的硬件IIC只有正确配置好,才不容易出问题。
你改用STC的IIC高级库STM32_I2C_CPAL试试。
或者参考社区别人分享的IIC硬件调试
https://www.stmcu.org.cn/bbs/article_244_576737.html
o(∩_∩)o哈哈哈~ 回答时间:2014-3-5 21:59:38

RE:STM32F030F4 TSSOP20 I2C调试问题

选用高级库
312494845 回答时间:2014-3-7 03:30:52

回复:STM32F030F4 TSSOP20 I2C调试问题

回复第 3 楼 于2014-03-05 21:59:38发表:
选用高级库
选用高级库怎么讲呢?
 
 
aaa999kk 回答时间:2014-3-7 10:04:32

RE:STM32F030F4 TSSOP20 I2C调试问题

检查STM32的硬件IIC的配置。进行IIC硬件调试, 对于库的程序再研究下
solo 回答时间:2014-3-26 15:44:59

RE:STM32F030F4 TSSOP20 I2C调试问题

我出现的问题基本跟楼主差不多,估计楼主也是ISR TXIS不复位导致的,请问楼主找到问题了么?或其它大神有解决办法?求指导,谢谢!
laishipeng 回答时间:2017-4-24 18:08:17
solo 发表于 2014-3-26 15:44
我出现的问题基本跟楼主差不多,估计楼主也是ISR TXIS不复位导致的,请问楼主找到问题了么?或其它大神有解决 ...

请问你的最后怎么怎么解决的呢???
Tcreat 回答时间:2017-4-24 18:34:35
https://www.stmcu.org.cn/module/forum/thread-577721-1-1.html  同样的芯片 可以测试成功
Tcreat 回答时间:2017-4-24 18:35:34
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版