Linux 下Altera SPI驱动使用
2017-02-21 14:51
218 查看
配置SPI
关于Clock相位和极性的说明
修改device tree的描述
其中#address-cells = <1>;#size-cells = <0>; 两行必须用。
spi-max-frequency = <1000000>; 这个信息在设备注册时必须使用,否则会导致注册不成功。1000000 clock frequency要符合
内核驱动使能:
编译之后boot就会在dev目录下看到文件节点:/dev/spi32766.0
在程序应用空间使用的时候通过spi_ioc_transfer 结构体来调用spi 总线传输。
mpu9250是先发送寄存器地址。根据读写需要需要设定寄存器字节的最高位信息。然后开始发送数据。
如果是读数据的话,第一个byte 读取的数据是0xff,应丢弃。从第二个开始取数据。
length为实际操作中需要多少组的时钟时序。如果淡出读n个数据的话,在length=n+1.1位为发送起始地址需要的时钟。
关于Clock相位和极性的说明
修改device tree的描述
spi_0: spi@0x100000100 { compatible = "altr,spi-16.1", "altr,spi-1.0"; reg = <0x00000001 0x00000100 0x00000020>; interrupt-parent = <&hps_0_arm_gic_0>; interrupts = <0 43 4>; clocks = <&clk_0>; #address-cells = <1>; /* embeddedsw.dts.params.#address-cells type NUMBER */ #size-cells = <0>; /* embeddedsw.dts.params.#size-cells type NUMBER */ bus-num = <0>; /* embeddedsw.dts.params.bus-num type NUMBER */ num-chipselect = <1>; /* embeddedsw.dts.params.num-chipselect type NUMBER */ status = "okay"; /* embeddedsw.dts.params.status type STRING */ spidev0: spidev@0 { compatible = "rohm,dh2228fv"; /* appended from boardinfo */ reg = <0>; /* appended from boardinfo */ spi-max-frequency = <1000000>; /* appended from boardinfo */ }; //end spidev@0 (spidev1) }; //end spi@0x100000100 (spi_0)
其中#address-cells = <1>;#size-cells = <0>; 两行必须用。
spi-max-frequency = <1000000>; 这个信息在设备注册时必须使用,否则会导致注册不成功。1000000 clock frequency要符合
内核驱动使能:
-->driver -->spi_altera
编译之后boot就会在dev目录下看到文件节点:/dev/spi32766.0
在程序应用空间使用的时候通过spi_ioc_transfer 结构体来调用spi 总线传输。
mpu9250是先发送寄存器地址。根据读写需要需要设定寄存器字节的最高位信息。然后开始发送数据。
如果是读数据的话,第一个byte 读取的数据是0xff,应丢弃。从第二个开始取数据。
spi_transfer.tx_buf = (unsigned long)tx; spi_transfer.rx_buf = (unsigned long)rx; spi_transfer.len = length; spi_transfer.speed_hz = speed_hz; spi_transfer.bits_per_word = bits_per_word; spi_transfer.delay_usecs = delay_usecs; int status = ioctl(spi_fd, SPI_IOC_MESSAGE(1), &spi_transfer);
length为实际操作中需要多少组的时钟时序。如果淡出读n个数据的话,在length=n+1.1位为发送起始地址需要的时钟。
相关文章推荐
- Linux 下Altera SPI驱动使用note
- beaglebone black上使用TI sdk中的linux系统来编写spi驱动
- linux 下spi的使用 ,cc2500模块驱动
- 在Zynq 7000平台上使用Linux spidev.c驱动,调试spi设备
- linux下的SPI模块驱动使用
- Linux下SPI驱动分析(3)
- Linux下SPI驱动分析(4)
- 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】PowerPC + Linux2.6.25平台下的SPI驱动架构分析
- linux驱动中使用其它模块导出的符号
- 关于linux驱动(应用)程序头文件使用
- Linux下SPI驱动分析
- Linux下SPI驱动分析(2)
- 块设备驱动向LINUX移植的常规步骤及INITRD的使用
- Linux驱动修炼之道-SPI驱动框架源码分析
- 关于linux驱动(应用)程序头文件使用
- 慢慢学Linux驱动开发,第七篇,scull的使用
- Linux下SPI驱动分析(5)
- AlteraFPGA使用通用SPIFlash
- 关于 s3c2416 hspi spi linux 驱动
- linux spi子系统 驱动分析续