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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版