stm32207 iic驱动 的main函数怎么写

stm32207 iic驱动 的main函数怎么写,第1张

IIC通信是 先发送读/写信号的地址,然后再发送数据,每次发送完之后都会有亩敬从设备的应答,应答说明通信成功。建议你去看一下IIC协议的书或者 网页,了解这个协迅旁慎议就知道怎么去写程序,下面我给解释一下几行代码,其余的依葫芦画瓢就行了。

IIC_Start()//准备进行IIC通信

IIC_Send_Byte(WriteGYAddress)//发送IIC的写数据的地址

IIC_Wait_Ack()//等待与STM32通信的从设备的应答

IIC_Send_Byte(0x00)//发送00到上面的地址WriteGYAddress

IIC_Wait_Ack()//等待与STM32通信的从设备的应答

IIC_Send_Byte(0x31)

IIC_Wait_Ack()

IIC_Stop()//启哗结束IIC通信

delay_us(30)//延时,准备下一次 *** 作

加油!

我觉得还好吧,加点针对性的的代码就可以了

1.比如为了防止错过Ack信号的读取,可以加入循环弯此发送并读Ack的步骤,也可以直接关中断,如果有资源用DMA最好了,收发数据以及标志位的相关处理和判断都自动处理。

2.还有就是调埋陵迅试过程中,如果断点设在等待Ack前,会清除Ack信号

ADDR: Address sent (master mode)/matched (slave mode)

This bit is cleared by software reading SR1 register followed reading SR2

Ack信号会在读SR1和SR2后被清除。调试器会读取SR1和SR2,所以设断点在等待Ack前会导致程序检测不到Ack信汪枝号

不用搞这个行皮了STM32的IIC通讯有个bug。

因为ack信号时间很短暂橡段,一旦错过了这个短暂的ACK信号,档如差STM32就挂了。

想用IIC的话,就用软件模拟吧。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8249787.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存