关注分享主机优惠活动
国内外VPS云服务器

STM32+CUBEMX

摘要:本节介绍总线并使用总线访问加速传感器。 您可以编译和下载代码,以添加一个循环以在主循环中读取。您可以检查数据输出,更改传感器的方向并查看测得的重力加速度的变化。

在本节中,我们介绍了I2C总线,并使用STM32上的I2C总线访问加速度传感器ADXL345。

1)i2c <p style =” rest:0; text - align:justify;

i2c可以安装多个主机和从属,而通信始终由主机启动。 每个从属都有一个唯一的地址,主机决定从地址访问哪个从属。

I2C总线上的两条电线,SCL是时钟线,而SDA是数据线。所有设备只能在这两条电线的输出上以低级别运行。公共汽车释放后,该电平是由公共汽车上拉电阻提高的。 因此,如果连接了硬件,则需要上拉电阻。否则,将不可能进行沟通。

jusify;”>如果I2C是空闲的,则所有设备都将释放总线并释放SCL和SDA。

i2c的开始栏零件:如果SCL高,则将SDA从高低开关。表示正在启动数据。它通常是由需要通信的主机开始的,并且起始条件如下:如果SCL高,SDA将从低点跳到高。表示数据传输已完成。通常,主机将终止通信,停止条件如下:时钟线很高,并且SDA数据线的级别尚未更改。 如果SCL时钟线较低,则SDA数据线级别可能会更改高/低,如下图所示。 style =“ margin -左:0; text -对齐:Justify;“> I2C的ACK和NACK都是响应。 ACK将SDA线拉低并释放Nack(向上拉)。 ACK和NACK都是响应,这可以是对从属的主机响应,也可以是对主机的响应。 具体(以ADXL345芯片为例):

主机开始通信,如果数据写入从属。实际操作是释放公共汽车并等待从从属响应ACK(即等待从从SDA线拉下)。 最终通信完成后,主机的传输停止条件如下:通信,如果从从站读取数据,在发送地址时,则必须等待从属响应ACK。当从属将数据返回到主机时,主机必须响应ACK,当主机读取最后一个字节并且不读取它时,它会对NACK响应。编写数据的过程如下:

<p style = p style =” margine -例如,ADXL345芯片。 通过I2C通信,其他芯片可能会有细微的差异,但基本上与这些条件结合在一起。

2)使用I2C STM32上的总线

sTM32都带有硬件i2c。接下来,使用STM32的硬件I2C读取加速度传感器ADXL345的值。

使用串行端口工程作为基础并添加配置。 如下图所示,选择I2C接口,其他默认都默认:

<p style =” margo -左:0; 0; 0; 0; text - align align aLign:align:apeifie; PB6是SCL,PB7是SDA。

硬件连接要求将ADXL345芯片SCL和SDA连接到PB6和PB7。 style =“ margin -左:0; text -对齐:Justify;“>

<p style =”左:0; text - align:Justify; justify;'' STM32的HAL库可以直接调用,因为它将I2C初始化和I2C读取操作封装到一个函数中。

在这里,您需要先更改错误,如下图所示。CUBEMX生成的代码必须在初始化GPIO之前进行。样式=“ Margine -左:0; text -对齐:Jusify;“>

adxl345:

简单描述,开始时提到的四个值是芯片的操作模式,而最后三个值则意味着在EMAS的三个方向上校准了EMAS的三个方向不在x和y x和y的三个方向上。 Z轴上的误差基本上是正常的,Z轴的误差约为0.6g。校准4]左:0;文本-对齐:正当;“>

<p style =”左:0; text - align:justify; style =

3)STM32硬件I2C问题注释

”但是有一天,如果您需要使用硬件I2C,我将总结一些在线讨论作为注释。style =“ margin -左:0; text -对齐:正当;“;”> b)i2c的速度永远不会太高。基本上,没有50K以下的问题。如果执行时间超过100K,则会出现问题。 即使您不使用FSMC,只需打开FSMC时钟就会产生效果。解决方案是使用I2C2,或将I2C时钟和数据线重新定义为PB8和9引脚。或关闭FSMC时钟;

d)硬件I2C不能被中断打断。当使用中断时,建议将I2C中断设置为首要任务。

我后来尝试使用软件i2c,考虑了一些在实践中难以验证的问题。

<p style =” left:0; text - align:justify;

我欢迎遵循我的官方帐户,并在“信息”中留言以获取相关信息和软件:

未经允许不得转载:主机频道 » STM32+CUBEMX

相关推荐

评论 抢沙发

评论前必须登录!