Linux 4.4内核SPI驱动特性:
①默认采用摩托罗拉SPI协议
②支持8位和16位
③软件可编程时钟频率和传输速率高达50MHz
④支持SPI 4中传输模式的配置
⑤每个SPI控制器支持一个到两个片选
1. 首先申请设备号(动态):
int alloc_chrdev_region(dev_t *dev,unsigned baseminor,unsigned count,const char *name);
含义就是申请一个动态主设备号,并申请一系列次设备号。
baseminor为起始次设备号,count为次设备号的数量,name为设备名,会在设备/proc/devices创建同名设备。
实例:
alloc_chrdev_region(&devno, 0,255, "myOled"); // 申请设备号devno,直观看到就是“myOled”会在系统的/proc/devices内显示。
2.注册设备到系统(没有创建设备):
int cdev_add(struct cdev *p, dev_t dev, unsigned count)
含义为 cdev 结构的指针,起始设备编号,以及设备编号范围。
实例接上:
spidev_major = MAJOR(devno);//get allocated major number dynamicly,根据devno获取到主设备号。