本人一直觉得I2C有点难用,特别是ST的,其实我也只用过ST的 哈哈# c( X, q0 D! K2 e; C( @ 虽然现在公司的项目上有用到I2C,但是我对STM32F030的I2C还是有些敬畏、果不其然芯片未搞定(当然只是暂时的),于是退而求其次,用I/O模拟试试,整整弄了两个晚上才读到数据,然而当我找到问题所在时 ,我又一次的无语了…… 下面和大家一起分享下原因:$ ]: {& Y" `% G9 \2 J) C #define SDA_READ (GPIOA->IDR & GPIO_Pin_10) >> 104 }/ Q8 P% n( W$ b1 E6 @ 错误的接收字节代码: <span style="color: #000000">INT8U I2C_RecByte(void)% ]7 ?. t5 h* k* t& G7 D% A/ Y# @ { INT8U i,dat=0;! ^6 _" H7 ?7 t2 } f1 m, P INT16U uwTemp =0;* E) ]: R9 o# f4 H- v, e" c( D $ F; ~/ [0 `2 @- [$ }5 G. k2 b I2C_SDA_IN();& c) l* R4 r6 w for(i=0;i> 10)这样至少可有保证相对于其他的语句,这是一个原子操作。 扯了这么多 自己都不知道主题在什么地方,写出了和大家分享下,同时自己今后也可以看看,可有起到温故知新作用! 哎 固件的I2C还没有实现呢,等实现了,再来续更哈…… 呵呵 I2C弄好有一段时间了,但是各种原因一直没有上传,现在上传,有些地方还有些模糊,还请大家一起讨论下0 L4 ]3 ?5 F1 m( q& b4 m |
STM32F0F1F4内部flash擦写时间和寿命
游名:STM32F030+FT1610FF1高精度超声波测距模块测距教程及参...
分享STM32F051中文参考手册(重制书签版)
STM32F0 IIC slave mode
STM32固件库分享,超全系列整理
基于STM32F0的FOC5.2库PMSM驱动:程序+原理图+BOM等全部开源分享
【MCU实战经验】+STM32F030的步进电机加减速
【管管推荐】STM32经验分享篇
三创电子(Tcreate)-STM32F030核心板代码
STM32F0 ADC(DMA中断)多通道,注释超详细
I2C_uWriteData(0XA0,0x00,16,Bufin);3 G* Z, [7 q! j' b! d) @
for(i=0;i<16;i++)Bufr[i]=0;& S; ?3 H, x1 `1 b& b
Delayms(1000);
I2C_uReadData(0XA1,0x00,16,Bufr);
Delayms(1000);2 Y2 D# V, H! V S' \" ]& [% i
3 ^/ q! H; @ [( Y$ b* n
SLAVER ADDRESS个人觉得应该换个名字,并不是器件的地址,而是功能代码吧~
可以呀
RE: 三创电子(Tcreate)-STM32F030调试之I2C篇
继续阅读原创汇总:3 N( p4 P4 \) r% B
STM32F030探索套件开发日志,中文教程,使用问答80篇
回复: 三创电子(Tcreate)-STM32F030调试之I2C篇
回复: 三创电子(Tcreate)-STM32F030调试之I2C篇
只能说是宏定义不够合理吧,我是在使用时如果要表达一个运算习惯在最外层加一个括弧,不过楼主能把遇到的问题与大家分享是比较好的,大家多多少少会在编程上有些小问题。4 i8 j. N, _; B9 ~# Z' j. B
9 E" q" p; o1 `) @
! }$ c; G; H1 E `$ I
学习了 还是要养成良好的习惯
RE: 三创电子(Tcreate)-STM32F030调试之I2C篇
直接在初始化的时候设置为复用AF模式就可以了吧。我与24c32通讯采用的开漏输出! N( E( O, ]2 v
void I2C_uConfiguration(void)
{/ U8 \7 ~# n" y% P# o3 |
GPIO_InitTypeDef GPIO_uInitStructure;
/ S' `- q8 ?- X! z" q
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE);, z( A* x* h* K# U+ ~9 c
0 ~; C1 v! n9 j; B9 t' J
GPIO_uInitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;2 J5 ]$ u8 [. Q7 s& H' e- w
GPIO_uInitStructure.GPIO_Mode = GPIO_Mode_AF;: n$ \6 d# Z! p Q& m0 q" E
GPIO_uInitStructure.GPIO_OType = GPIO_OType_OD; : _: }6 P. R5 g! ~* c+ Q- V
GPIO_uInitStructure.GPIO_Speed = GPIO_Speed_Level_3; // 10M9 r7 p1 f8 @# Q3 j) G
GPIO_Init(GPIOA,&GPIO_uInitStructure);' T& p2 K1 w6 J$ j7 B
}
谢谢你的分享,我好好看看,谢了