信号质量有问题的波形001:信号质量有问题的波形002:从上图可以看出,GPIO口模拟的I2C接口,电平都存在半高的情况。因为MFI芯片的I2C采用的GPIO口模拟I2C接口来实现的此功能,原SCL采用的GPB7(内部默认为上拉状态),因为GPIO资源的调整,SCL改为GPD12(内部默认为下拉状态...
分类:
其他好文 时间:
2015-01-27 18:13:22
阅读次数:
753
目录:一. 说明 二. 驱动程序说明及问题 三. 案例一 四. 案例二一. 说明 mini210开发板上带了at24c08, 看了linux内核自带的at24.c的驱动程序,编译下载到看发板,读写都行;通过增加一些调试信息,对linux i2c驱动其中的编写方法之一有了一定了解,在我...
分类:
系统相关 时间:
2014-09-11 23:48:22
阅读次数:
543
模拟I2C通讯控制DS1307读写硬件时钟
#include "global.h"
#include "drv_ds1307.h"
#define I2C_CLK_PORT GPIOB
#define I2C_CLK_PIN GPIO_PIN_4
#define I2C_SDA_PORT GPIOB
#define I2C_SDA_PIN...
分类:
其他好文 时间:
2014-08-20 17:59:32
阅读次数:
385
TS12芯片驱动
使用模拟I2C驱动TS12完成触摸按键检测功能:
#include "stm8s.h"
#include "global.h"
#include "drv_key.h"
uint8_t KeyByte;
/*******************************************************************************
// ...
分类:
其他好文 时间:
2014-08-20 14:12:22
阅读次数:
255
这个飞控是基于STM32,整合了MPU6050,即陀螺仪和重力加速计,但没有融合电子罗盘;这是飞控程序的控制流程(一个执行周期):比较重要的地方:1.i2c通信方式;STM32的开发库是带有i2c通信的相关函数的,但是我最后还是没有用这些函数。我通过GPIO模拟i2c,这样也能获得mpu6050的数...
分类:
其他好文 时间:
2014-06-22 11:03:40
阅读次数:
360
上次用gpio模拟i2c理解i2c协议,同样的,我用gpio模拟spi来理解spi协议。
我用的是4线spi,四线分别是片选、时钟、命令/数据、数据。
数据在时钟上升沿传递,数据表示的是数据还是命令由命令/数据线决定。
开始条件:
void spi_start(void)
{
gpio_config(GPIO_CS, GPIO_OUTPUT);
udelay(SPI_SPEED...
分类:
其他好文 时间:
2014-05-25 07:07:17
阅读次数:
158
之前在学习I2C驱动,想了想应该先深刻理解下I2C协议。个人觉得理解I2C协议最好的方法就是实践,而最好的实践方式就是用GPIO来模拟I2C协议进行试验,直观深刻。
先看下I2C时序图:
根据时序图,用两个gpio分别模拟sda和scl即可。在这之前自然需要先对gpio进行输入输出的配置。这里只从写数据角度来描述这一过程。读数据同理即知。
先配置gpio,包括sda、scl、供电gp...
分类:
其他好文 时间:
2014-05-07 05:31:46
阅读次数:
303
数据有效性:
起始和终止信号时序:
设备地址:
写字节时序:
读数据时序:
函数模拟 IIC 总线 时序:
/**************************************/
/******模拟I2C总线操作函数*************/
/**************************************/
//延时函...
分类:
其他好文 时间:
2014-05-01 21:58:58
阅读次数:
305