RTT设备与驱动之I2C:】的更多相关文章

I2C主从结构(可以有多个主机,但同一时间只能有一个):I2C有两种地址结构7位/10位 总线空闲时,SDA 和 SCL 都处于高电平状态. 开始信号: SCL 为高电平时,主机将 SDA 拉低 结束信号: 在 SDA 为低电平时,主机将 SCL 拉高并保持高电平,然后在将 SDA 拉高,表示传输结束 API函数: rt_device_t rt_device_find(const char* name);查找设备读写信息 rt_size_t rt_i2c_transfer(struct rt_i…
单片机的PIN有2个基本功能:GPIO和AFIO,其中gpio的常用功能: 1 输入:上拉.下拉.模拟.浮动 2 输出:上拉.下拉.推挽.开漏 3 中断:上升沿.下降沿.双沿.高电平.低电平触发 RTT是将GPIO重新编号,然后根据唯一编号进行控制:有2种方式可以获取引脚编号:使用宏定义或者查看PIN 驱动文件 void rt_pin_mode(rt_base_t pin, rt_base_t mode); void rt_pin_write(rt_base_t pin, rt_base_t v…
硬件定时器可以对外部时钟进行计数,利用内部时钟进行定时. 函数 描述 rt_device_t rt_device_find(const char* name); 查找定时器设备 rt_err_t rt_device_open(rt_device_t dev, rt_uint16_t oflags);ofalgs=RT_DEVICE_OFLAG_RDWR 以读写方式打开定时器设备 rt_err_t rt_device_set_rx_indicate(rt_device_t dev, rt_err_…
SPI全双工设备的操作分为主设备和从设备(可以多个,多线程下从设备访问主设备要先获得总线控制权) rt_device_t rt_device_find(const char* name);查找设备 struct rt_spi_message *rt_spi_transfer_message(struct rt_spi_device *device,struct rt_spi_message *message):发送消息,以单向链表形式 void rt_spi_message_append(str…
这里将PWM当成一个设备:PWM简介 上图是一个简单的 PWM 原理示意图,假定定时器工作模式为向上计数,当计数值小于阈值时,则输出一种电平状态,比如高电平,当计数值大于阈值时则输出相反的电平状态,比如低电平.当计数值达到最大值是,计数器从0开始重新计数,又回到最初的电平状态.高电平持续时间(脉冲宽度)和周期时间的比值就是占空比,范围为0~100%.上图高电平的持续时间刚好是周期时间的一半,所以占空比为50%. 相关操作 函数 描述 rt_device_t rt_device_find(cons…
有一般收发.中断方式.DMA方式: rt_device_t rt_device_find(const char* name); rt_err_t rt_device_open(rt_device_t dev, rt_uint16_t oflags); oflags =RT_DEVICE_FLAG_RDWR|RT_DEVICE_FLAG_INT_RX #define RT_DEVICE_FLAG_RDWR 0x003 /* 可读写模式 */ #define RT_DEVICE_FLAG_STREA…
I2C总线.设备.驱动 框架 I2C驱动框架可分为3个部分,分别是:I2C核心层.I2C总线驱动层(适配器层)以及I2C设备驱动层: I2C核心层 提供了统一的I2C操作函数,主要有两套函数smbus(system manager bus)和i2c_transfer: 其中smbus是i2c_transfer的一小部分,有一些适配器只支持smbus,当驱动中只是用部分I2C协议功能时可使用smbus,具体使用可参考内核源码目录下:kernel/Documentation/i2c/smbus-pr…
------ 总线上先添加好所有具体驱动,i2c.c遍历i2c_boardinfo链表,依次建立i2c_client, 并对每一个i2c_client与所有这个线上的驱动匹配,匹配上,就调用这个驱动的i2c_xxx_probe  ------ 所有设备驱动在init函数里,一般只做注册平台驱动的动作,注意不是平台设备.以i2c.c为例,这个驱动的平台probe函数里做的事情比较多.因为i2c_boardinfo早已在具体驱动注册到链表,i2c.c的平台驱动就是要把每一个i2c_boardinfo…
开干: 1.闲言碎语 这个驱动,越写觉的越简单,入门难,入门之后感觉还好.Linux开发还是比较友好的. 2.编写MPU6050带字符驱动的i2c从设备驱动 要实现的功能就是,将MPU6050作为字符驱动,在应用层,对其进行读数据.实现简单的功能.在前面的分析和实践中,可以看到实现字符驱动主要是实现file_operation中的方法,注册初始化cdev,让cdev和file_opration产生联系,字符驱动的初始化通过module_init来声明.实现i2c从设备驱动,主要是i2c_clie…
我思念的城市已是黄昏 为何我总对你一往情深 曾经给我快乐 也给我创伤 曾经给我希望 也给我绝望 我在遥远的城市 陌生的人群 感觉着你遥远的忧伤 我的幻想 你的忧伤,像我的的绝望,那样漫长,,,,,这是今天的旋律,直入心底~~~~~~~~~~~~~~~~ 在Linux 系统中,I2C 驱动由3 部分组成,即I2C 核心.I2C 总线驱动和I2C 设备驱动,I2C 总线仅仅使用SCL.SDA 这两根信号线就实现了设备之间的数据交互,极大地简化了对硬件资源和PCB 板布线空间的占用 1 Linux的I…