嵌入式开发完整体系课程(含项目) 扫二维码继续学习 二维码时效为半小时

(170评价)
价格: 598.00元

linux如何管理显存

framebuffer核心层:drivers/video/fbmem.c(提供方接口函数)

 

[展开全文]
孙汉荣 · 2017-12-23 · 0

在S%PV210芯片中i2c的START、STOP、ACK、R/W是固定。

设备地址,读写设备的地址,数据是可变的。

 

[展开全文]
zune · 2017-01-24 · 0

10。中断的处理函数

irqreturn_t adc_isr(int irq,void *dev_id)

{

flag = 1; //1为ADC转换结束 

//唤醒休眠的进程

wake_up_interruptible(&wq);

//清理中断

writel(0,adc_base+-x18);

return IRQ_HANDLED;

 

}

 

 

11.启动ADC

cur = readl(adc_base);

cur |=(1<<0);

writel(cur,adc_base);

udelay(200);

//进入睡眠,等待ADC转换结束

wait_event_interruptible(wq,flag);

flag= 0;

12.读取转换的结果

readl(adc_base+0x0c)&0x3ff;

[展开全文]
zune · 2017-01-24 · 0

1.一般的芯片都有自带ADC模块。所以只需要进行进行字符设备的驱动设计就可以。

2.如果是外接的ADC要考虑与芯片的通信协议,如果接的是I2C接口,那么就是I2C设备文件。

如果接的是GPIO口,那么就是GPIO设备文件。

3.操作寄存器要进行地址的映射

void *adc_base  = ioremap(0xe1700000,0x2000)

 

4初始化adc默认的参数

cur = (1<<16)|(1<<14)|(19<<6);

writel(cur,adc_base);

5.配置延时函数

cur = 10000;

writel(cur,adc_base+0x08);

6.配置输入通道

cur = 0;

writel(cur,adc_base+0x1c);

7.注册中断

request_irq(IRQ_ADC,adc_isr,0,"ADC",NULL);

free_irq(IRQ_ADC,NULL);//注销中断

8.初始化等待队列

wait_queue_head_t wq;

init_waitqueue_head(&wq);

9.退出驱动的函数设计时的注销函数要与注册时相反

[展开全文]
zune · 2017-01-24 · 0

芯片通信接口

选择通道,分辨率,时钟启动

[展开全文]
余嘉俊STB · 2016-10-10 · 0

统一访问接口和操作硬件的方法

获取信号

[展开全文]
余嘉俊STB · 2016-10-10 · 0

i2c_client初始化

i2c_board_info分配

内核填充i2c_client

[展开全文]
余嘉俊STB · 2016-09-27 · 0

一主多从

主设备主动发起通信

SCL主端控制

SDA主端从端配置

主设备发送START信号

SCL高SDA从高到低跳变

SCL高SDA从低到高跳变

设备接口

通过管脚改变固定地址

区分从设备

应答信号成功交互与否

发送地址

匹配地址

读写信号

主设备发送STOP信号

I2C控制器控制IO口来实现固定I2C通信过程

设备地址,读写设备的地址,数据

I2C总线驱动

I2C设备驱动

i2c_transfer()//老式接口

SMBUS新式接口

设备总线驱动模型

device_client

device_driver

添加节点,取出dev链表的每一个节点

[展开全文]
余嘉俊STB · 2016-09-27 · 0