打印
[资料分享]

高度提炼的模拟I2C程序.pdf

[复制链接]
1036|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
nicholasldf|  楼主 | 2016-12-29 10:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 nicholasldf 于 2017-1-4 08:56 编辑


设计了一个巧妙的I2C结构体,赋值了GPIO端口和PIN管脚,I2C地址等等,,,就可以模拟出无数个I2C了。

高度提炼的模拟I2C程序.pdf (425.55 KB)


使用方法:定义一个模拟I2C结构体,初始化IO口,设置好GPIO端口和pin引脚号,,即可开始使用        
        //
定义好模拟I2C结构体
        structSimuI2cPortType  TouchI2cPort;

        //
管脚初始化,设置SCLSDA为普通IO口,输出方式
        //SCL
        /*Configure SCL PIN - PB0 */
       GPIO_InitStruct.Pin = GPIO_PIN_0;
       GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
       GPIO_InitStruct.Pull = GPIO_PULLUP;
       GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
       HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
       HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);


        //SDA
        /*Configure SDA PIN - PF11 */
       GPIO_InitStruct.Pin = GPIO_PIN_11;
       HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
       HAL_GPIO_WritePin(GPIOF, GPIO_PIN_13, GPIO_PIN_SET);
        
        
        //
设置好模拟I2C结构体的端口号和引脚号:SimuI2C PORT, SCL-PB0, SDA-PF11
        //SCL
的端口号和引脚号
       TouchI2cPort.SCLPort = GPIOB;
       TouchI2cPort.SCLPin  = GPIO_PIN_0;
        //SDA
的端口号和引脚号
       TouchI2cPort.SDAPort = GPIOF;
       TouchI2cPort.SDAPin  = GPIO_PIN_11;
        

       //
设置该模拟I2C结构体对应从设备的地址
      TouchI2cPort.address  =  xxxx; //slave address

      //let‘s  go   ^_^
       开始使用了

相关帖子

沙发
renxiaolin| | 2017-1-5 17:27 | 只看该作者
第一,不巧妙,第二,可移植性差,第三,代码也比较烂,鉴定完毕 !

使用特权

评论回复
板凳
nicholasldf|  楼主 | 2017-1-6 09:12 | 只看该作者
renxiaolin 发表于 2017-1-5 17:27
第一,不巧妙,第二,可移植性差,第三,代码也比较烂,鉴定完毕 !

呵呵,,期待你的分享一个最好的“模拟IIC”,,代码比linux还漂亮,注释文档比ucos还好,移植性几乎不用改任何一句代码,,甚至声控就行了

使用特权

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

本版积分规则

61

主题

261

帖子

10

粉丝