STM32学习12

本文介绍了IIC和SPI两种常见的总线协议。详细解释了IIC总线的起始、停止及应答信号,并通过实例展示了如何使用IIC进行24C02的读写操作。同时,文章还探讨了SPI协议的特点及其关键参数CPOL和CPHA的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.      因为IIC总线是一种非常常见而且普及的总线协议,用来对各种模块的寄存器读写从而进行配置,类似的还有SPI总线协议,虽然单片机里学过了,但是也差不多忘了,所以今天再温习一下。

2.      今天测试的也是例程上的,使用IIC对24C02进行读写操作,通过LCD屏幕显示。

3.      IIC:有起始信号,停止信号,应答信号。

4.      硬件上已经将PB6接到了IIC_SCL上,将PB7接到了IIC_SDA上,这是因为这两个端口可以端口复用成IIC总线的两根线,模式时推挽输出。

5.      GPIO:关于灵活控制某个端口为输入输出模式:

SDA也就是PB7作为输出的时候,使用50MHz的输出速度,做普通输出(CNF1 CNF0 MODE1 MODE0 =0011);当SDA作为输入时,使用复用功能,MODE保留(CNF1 CNF0 MODE1 MODE0 = 1000)

6.      IIC使用流程,我个人总结是这样的:1)配置IIC服用端口;2)检测IIC器件是否存在;3)由IIC发出起始信号,同时发送器件地址,接着就等待应答信号的产生;4)等待到了应答信号就可以发送数据出去,同样也需要进行应答信号的检测;5)那么读取其实也是类似的,具体的时序方面,其实就是根据手册上的时序图模拟一遍,注意位操作的正确性就可以了。

7.      SPI协议:接着温习SPI协议,这个协议其实在我用单片机接NRF24L01射频通信模块的时候已经有了比较深刻的理解了,为什么说深刻,因为那时候还不想现在这么浮躁,会耐下性子,一步一步的从通信协议,配置寄存器开始做起,最后花了五六天才基本搞通互发,第一个煎熬的模块。

8.      SPI是摩托罗拉公司提出的总线协议,这是一种同步,高速,全双工的串行通信协议。

9.      关于两个设置值,用来决定时钟的空闲信号和采样时机的CPOL和CPHA。

10.  CPOL=0,串行时钟的空闲状态为低电平,反之为高电平;CPHA=0,则在第一个时钟跳变时做采样,CPHA=1,则在第二个时钟跳变时做采样。

11.  如何记忆MISO和MOSI,可以拆开理解为Master In Slave Out和 Master Out Slave In。

12.  根据我之前的理解,通俗的讲,SPI协议就是,小时候玩儿的你拍一我拍一,这种节奏就是时钟,这种击掌的过程就是数据线的传输,其实也还是不够贴切。应该是像两个小朋友交换同样个数的玩具,但是他们选择一换一的节奏逐个交换,直至他们的玩具全部交换完成,那么一个小朋友就有了原来属于另一个小朋友的玩具,那么这些玩具就是数据,用来装玩具的就是寄存器,用来以一定节奏交换就是时钟。

13.  现在例程上使用的是PB12做W25Q128的CS片选,PB13做SCK,PB14做MISO,PB15做MOSI。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值