硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1410|回复: 5
收起左侧

[I2C] 模拟IIC改为模拟SMBUS,并读取BQ40Z50

[复制链接]

6

主题

16

回帖

34

积分

新手上路

积分
34
发表于 2023-3-7 10:20:52 | 显示全部楼层 |阅读模式
本帖最后由 zhao5352 于 2023-3-7 15:18 编辑

1、速率不同,将IIC的速率降至BQ40Z50要求的速率
2、"Clock stretching"问题,SMBUS下,从机可以拉住SCL信号,让其保持低电平,原IIC协议不处理这问题,就会导致通信失败,
IIC协议里面需在主机将SCL电平拉高后,再判断是否拉高:
#define I2Cx_SCL_H do {\
    HAL_GPIO_WritePin(I2Cx_PORT, I2Cx_SCL_PIN, GPIO_PIN_SET); \
    /*use for smbus, wait until the slave to release iic bus*/ \
    uint32_t timeout = 1000; \
    while(timeout && (HAL_GPIO_ReadPin(I2Cx_PORT, I2Cx_SCL_PIN) != GPIO_PIN_SET)) timeout--; } while(0)


"Clock stretching"问题详见下图:
image.png
3、可选的PEC校验
image.png
/******************************************************************************
* Name:    CRC-8/SMBUS               
* Poly:    0x07
* Init:    0x00
* Refin:   False
* Refout:  False
* Xorout:  0x00
* Note:    x8+x2+x+1
*****************************************************************************/

static uint8_t CRC8_Accumulate(uint8_t *buf, uint32_t len)
{
    uint8_t crc8 =0;
    uint8_t i;

    while(len--)
    {
        crc8 ^= *buf++;
        for (i=0; i<8; i++)
        {
            if (crc8 & 0x80)
                crc8 = (crc8 << 1) ^ 0x07;
            else
                crc8 <<= 1;
        }
    }
    return crc8;      
}




SMBus Made Simple.pdf

502.03 KB, 下载次数: 25

评分

参与人数 1金币 +50 收起 理由
eric2013 + 50 很给力!

查看全部评分

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2023-3-7 12:28:16 | 显示全部楼层
谢谢楼主分享。
回复

使用道具 举报

8

主题

157

回帖

181

积分

初级会员

积分
181
发表于 2023-3-7 14:24:29 | 显示全部楼层
本帖最后由 yunqi 于 2023-3-7 17:42 编辑

谢谢楼主,辛苦!

硬件I2C你也试试,开启PEC、SMBUS,会省好多事
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2023-4-25 10:52:55 | 显示全部楼层
楼主你好,我最近在用模拟IIC调试BQ40Z50-R1,发现有时候读到的高位数据为FF是什么原因导致的呢?
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2023-5-11 17:00:59 | 显示全部楼层
为什么要用软模拟I2C,是51单片机?
回复

使用道具 举报

1

主题

2

回帖

5

积分

新手上路

积分
5
发表于 2024-3-27 19:43:05 | 显示全部楼层
这个宏,编译不通过
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-28 06:28 , Processed in 0.201998 second(s), 32 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表