打印
[MM32软件]

STM32f3硬件SMBus如何传输PEC

[复制链接]
1203|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
probedog|  楼主 | 2022-10-13 09:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

刚接触SMBUS,想实现一下它的基本传输,平台是f3discovery;我用Cube选择了two-wire模式的SMBus1和SMBus2生成了基本代码,打算把1作为master,2作为slave采用中断方式去完成收发的demo(不知道可不可行),我在生成的SMBus2配置项中把ownaddress1 设置为0xA0 即从机地址;

请问在main里面应该怎样调用HAL库能实现带PEC的基本传输?

使用特权

评论回复
沙发
芯路例程| | 2022-10-13 16:59 | 只看该作者
PEC是个什么东西,是数据吗?还是一种协议?

使用特权

评论回复
板凳
Stahan| | 2022-11-2 21:33 | 只看该作者
没听说过pec

使用特权

评论回复
地板
a838899776| | 2023-12-1 09:46 | 只看该作者
芯路例程 发表于 2022-10-13 16:59
PEC是个什么东西,是数据吗?还是一种协议?

校验码

使用特权

评论回复
5
jcky001| | 2023-12-27 11:21 | 只看该作者
关于如何在main()函数中调用HAL库实现基本传输,这取决于Cube生成的代码以及你使用的STM32 HAL库版本。通常,你需要:

初始化HAL库。
初始化SMBus接口(即SMBus1和SMBus2)。
设置中断处理程序(如果使用中断)。
在需要通信时,从Master端发送请求并等待从Slave端的响应。

使用特权

评论回复
6
jcky001| | 2023-12-27 11:21 | 只看该作者
为了在F3 Discovery平台上实现SMBus的基本传输,你需要按照以下步骤操作:

初始化SMBus:首先,你需要初始化SMBus1和SMBus2。这通常在Cube生成的代码中已经完成。
设置Master和Slave:根据你的描述,你打算将SMBus1作为Master,SMBus2作为Slave。确保在Cube中正确配置了这两个接口。
设置中断:为了使用中断进行通信,你需要配置相应的中断处理程序。确保在Cube生成的代码中已经生成了与SMBus2相关的中断处理程序。
设置地址:你已经设置了SMBus2的ownaddress1为0xA0作为从机地址,这是正确的。
发送和接收数据:当Master需要与Slave通信时,它会发送一个起始条件(Start Condition),然后发送地址和读写位。如果Slave的地址与Master发送的地址匹配,它会发送一个确认位(Acknowledge),然后开始数据传输。数据传输完成后,Master发送一个停止条件(Stop Condition)。
处理PEC(可能):SMBus协议支持可选的错误检查(PEC),如果需要使用,请确保在Cube配置中启用它,并在代码中相应处理。

使用特权

评论回复
7
公羊子丹| | 2023-12-27 20:41 | 只看该作者
这个也不太懂

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

385

主题

2085

帖子

3

粉丝