社区
单片机/工控
帖子详情
求助 STM32F103硬件I2C发送不出起始信号
梦之旅丶梦
2016-08-18 04:26:55
STM32F103硬件I2C使用遇到问题
我使用STM32的I2C1连接I2C2,I2C1作为主机发送数据给作为从机的I2C2,能够正常接收到数据,但是使用镊子短接SCL和SDA一段时间之后在断开,I2C1就发不出起始信号,总线为占用状态,数据也就无法传输,一直找不到原因,虽然不短接不会出现问题,但不找到解决方法实在不放心。
这个是正常情况下的寄存器
这个是短接之后再断开之后的寄存器
求解答
...全文
1525
7
打赏
收藏
求助 STM32F103硬件I2C发送不出起始信号
STM32F103硬件I2C使用遇到问题 我使用STM32的I2C1连接I2C2,I2C1作为主机发送数据给作为从机的I2C2,能够正常接收到数据,但是使用镊子短接SCL和SDA一段时间之后在断开,I2C1就发不出起始信号,总线为占用状态,数据也就无法传输,一直找不到原因,虽然不短接不会出现问题,但不找到解决方法实在不放心。 这个是正常情况下的寄存器 这个是短接之后再断开之后的寄存器 求解答
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
梦之旅丶梦
2016-09-01
打赏
举报
回复
就这样沉了。。。
fly 100%
2016-08-23
打赏
举报
回复
sda低电平表示忙啊
Acuity.
2016-08-23
打赏
举报
回复
产品上,为了可靠性,我上的模拟i2c。
梦之旅丶梦
2016-08-23
打赏
举报
回复
引用 4 楼 xuweiwei1860 的回复:
sda低电平表示忙啊
是处于忙状态,但短接之后就不能恢复了,主机也就发不出起始信号
bearkan
2016-08-22
打赏
举报
回复
F103的硬件IIC是有问题的,好像要做IO重新映射,具体的我就不能解答了。
梦之旅丶梦
2016-08-18
打赏
举报
回复
过程中也没有任何的错误中断产生
梦之旅丶梦
2016-08-18
打赏
举报
回复
补充一下,短接之后无法发送数据时SCL和SDA一直为低电平
STM32f103
通过
I2C
显示字符到OLED屏幕上
*1. void
I2C
_Configuration(void) -- 配置CPU的
硬件
I2C
* 2. void
I2C
_WriteByte(uint8_t addr,uint8_t data) -- 向寄存器地址写一个byte的数据 * 3. void WriteCmd(unsigned char
I2C
_Command) -- 写命令 * 4. void WriteDat(unsigned char
I2C
_Data) -- 写数据 * 5. void OLED_Init(void) -- OLED屏初始化 * 6. void OLED_SetPos(unsigned char x, unsigned char y) -- 设置起始点坐标 * 7. void OLED_Fill(unsigned char fill_Data) -- 全屏填充 * 8. void OLED_CLS(void) -- 清屏 * 9. void OLED_ON(void) -- 唤醒 * 10. void OLED_OFF(void) -- 睡眠 * 11. void OLED_ShowStr(unsigned char x, unsigned char y, unsigned char ch[], unsigned char TextSize) -- 显示字符串(字体大小有6*8和8*16两种) * 12. void OLED_ShowCN(unsigned char x, unsigned char y, unsigned char N) -- 显示中文(中文需要先取模,然后放到codetab.h中) * 13. void OLED_DrawBMP(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char BMP[]) -- BMP图片
【STM32】标准库-
I2C
-DMA收发数据-读写AT24C02-仿printf和scanf输入输出
采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别为PH10,PH11,PH12 Key1为PA0,Key2为PC13 KEIL5下载配置有FLASH与SRAM 收发共用一个缓冲区
I2C
使用DMA与AT24C02通信,Tx中,利用DMA传输数据,但是起始位,设备地址,读写地址采用的是阻塞式
发送
,数据则是采用DMA传输;注意点:采用DMA
发送
应该等到BTF(
发送
寄存器空,移位寄存器也为空)事件后设置停止位,不可以在DMA传输完成中断中设置停止位,因为此时正在
发送
最后一个字节,故开启BTF中断(
I2C
_EV),在该中断服务函数中
发送
停止位并关闭
I2C
的DMA传输使能。 Rx中,利用DMA传输数据,但是起始位,设备地址,AT24C02写入地址采用的是阻塞式
发送
,数据则是采用DMA传输;注意点:在DMA传输完成中断中
发送
停止位,并关闭
I2C
的DMA传输使能,
I2C
主接收,写读转换中再次
发送
起始位前,第一次
发送
设备地址字节后,应检测BTF 仿printf写入
发送
缓冲区前,应检查上一次通信是否结束
OLED驱动芯片SH1107和SH1106的STM32驱动程序
STM32单片机
I2C
驱动OLED驱动芯片SH1107和SH1106的驱动程序 里面程序的名字为SH1107,但SH1106的驱动方法基本一致 示例图片为64*128,实际可能需要调整起始坐标位置才能显示全
STM32F103
硬件
I2C
很多时候由于模拟
I2C
以及足够满足通信需求而且比较灵活,所以
硬件
I2C
被很多人忽略。但
硬件
IIC 的效率要高于软件模拟的,模拟 IIC 是通过 GPIO, 软件模拟寄存器的工作方式,而
硬件
IIC 是直接调用内部寄存器进行配置,所以采用芯片自带的
硬件
IIC 通信接口的读写速度较模拟的会快一些。 对于部分初学且不会使用
硬件
IIC的小伙伴,这里以正点原子的
STM32F103
ZET6精英板为例,初始化一个
硬件
I2C
接口用于OLED的通信供大家参考学习。......
STM32F103
硬件
I2C
主机接收
发送
数据,亲测可用
STM32F103
硬件
I2C
主机
发送
数据和接收数据完整代码,亲测可用。
单片机/工控
27,375
社区成员
28,770
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章