当前位置: 首页 > news >正文

公司官方网站建设德阳做网站的公司

公司官方网站建设,德阳做网站的公司,专家免费看ct片,建设网站如何选择服务器Linux内核集成了spidev驱动#xff0c;提供了SPI设备的用户空间API。支持用于半双工通信的read和write访问接口以及用于全双工通信和I/O配置的ioctl接口。使用时#xff0c;只需将SPI从设备的compatible属性值添加到spidev区动的spidev dt ids[]数组中#xff0c;即可将该SP… Linux内核集成了spidev驱动提供了SPI设备的用户空间API。支持用于半双工通信的read和write访问接口以及用于全双工通信和I/O配置的ioctl接口。使用时只需将SPI从设备的compatible属性值添加到spidev区动的spidev dt ids[]数组中即可将该SPI从设备创建为spidev设备。如果不想编写单独的spi设备驱动那么使用linux内核提供的通用spidev设备驱动就够了它提供统一的字符设备操作那么只需要在应用层读写和控制即可。 spidev驱动简介 spidev是一个Linux内核驱动用于与SPI串行外设接口设备进行通信。SPI是一种全双工、同步的串行通信协议常用于连接微控制器和外部设备。spidev驱动允许用户空间程序通过Linux的设备文件接口与SPI设备进行通信。用户可以通过打开和读写设备文件来发送和接收SPI数据。spidev驱动提供了一组控制IO口和SPI参数的ioctl命令。 同时Linux内核也集成了SPI测试工具spidev test用于在用户态对spidev动功能进行测试和验证。 spidev设备驱动源码位置在linux-imx-4.1.15\drivers\spi\spidev.c 驱动框架框图 除了使用spidev驱动外当然也可以自己编写SPI驱动。 使用现有的spidev驱动可以简化开发过程因为它提供了一组用户空间接口可以直接在应用程序中使用标准的文件操作函数如open、read、write和ioctl来操作SPI设备。这种方式适用于大多数应用场景特别是对于简单的SPI设备操作可以快速实现功能。 如果使用自己编写的SPI驱动也可以也不算麻烦需要在内核中实现SPI子系统包括SPI控制器驱动和SPI设备驱动最后根据需要实现个如字符型设备驱动操作接口供上层应用使用即可。 应用层使用步骤 用户应用层使用spidev驱动的步骤如下 1. 打开SPI设备文件用户可以通过打开/dev/spidevX.Y文件来访问SPI设备其中X是SPI控制器的编号Y是SPI设备的编号。 2. 配置SPI参数用户可以使用ioctl命令SPI_IOC_WR_MODE、SPI_IOC_WR_BITS_PER_WORD和SPI_IOC_WR_MAX_SPEED_HZ来设置SPI模式、数据位数和时钟速度等参数。 3. 发送和接收数据用户可以使用read和write系统调用来发送和接收SPI数据。写入的数据将被传输到SPI设备而从设备读取的数据将被存储在用户提供的缓冲区中。 4. 关闭SPI设备文件当不再需要与SPI设备通信时用户应该关闭SPI设备文件。 总结起来spidev驱动提供了一种简单而灵活的方式来与SPI设备进行通信使得用户可以轻松地在Linux系统上开发和控制SPI设备。 内核配置 使能spidev用户态驱动 在生成的config文件中可以看到以下配置生效了。我的是在imx6ul开发板的imx_v7_defconfig的linux内核配置文件中。 CONFIG_SPIy CONFIG_SPI_GPIOy CONFIG_SPI_IMXy CONFIG_SPI_SPIDEVy编写设备树 ecspi3 {fsl,spi-num-chipselects 2;/*cs管脚数配置*/cs-gpios 0,gpio1 20 GPIO_ACTIVE_LOW;/*cs管脚配置*/pinctrl-names default;pinctrl-0 pinctrl_ecspi3;status okay;/* status属性值为okay 表示该节点使能*/spidev: icm206080 {compatible alientek,icm20608;spi-max-frequency 8000000;reg 0;/*spi设备是没有设备地址的, 这里是指使用spi控制器的cs-gpios里的第几个片选io */};oled: oledsh11061 {compatible yang,oledsh1106;/*重要会匹配spidev.c中指定的compatible*/spi-cpol;/*配置spi信号模式*/spi-cpha;spi-max-frequency 8000000 ;/* 指定spi设备的最大工作时钟 */reg 1;}; }; 以上需要注意的是如果该spi接口下挂载有多个从设备需要设置fsl,spi-num-chipselects 2;默认该值为1。还有需要注意的地方是cs-gpios 片选信号需要配置对应的个数。以上的为配置了两路片选GPIO管脚第一个默认的第二个是指定的。如果仅有一个从设备可以配置cs-gpio就行了。注意cs-gpio和cs-gpios的区别带s的标识可以有多个。 如果忽略cs管脚数配置则会出现以下错误 需要设置fsl,spi-num-chipselects 2;  注意上面的compatible 属性在新版linux内核可以写任意的字符串最好不再写”spidev”老版的是要写成”spidev”。给出的理由是 spidev should never be referenced in DT without a specific compatible string, it is a Linux implementation thing rather than a description of the hardware。 此外还有一些额外配置以下为自定义属性用于指定工作时序方式及其它功能设置等。如CPOL需要设1, 则只需在spi设备节点里加上spi-cpol属性即可; CPOL设0则不写spi-cpol属性即可 。 buswidth 8; /* 传输以8位为单位 */ mode 0; /* 使用第几种工作时序(CPOL, CPHA) */ /*但在现用的内核源码里发现, spi设备的工作时序并不是用mode属性值来指定的*/ /* 如CPOL需要设1, 则只需在spi设备节点里加上spi-cpol属性即可; CPOL设0则不写spi-cpol属性即可 */ /* CPHA设1时则在设备节点里加上spi-cpha属性即可 */  pinctrl的配置 pinctrl_ecspi3: ecspi3grp {fsl,pins MX6UL_PAD_UART2_RTS_B__ECSPI3_MISO 0x100b1 /* MISO*/MX6UL_PAD_UART2_CTS_B__ECSPI3_MOSI 0x100b1 /* MOSI*/MX6UL_PAD_UART2_RX_DATA__ECSPI3_SCLK 0x100b1 /* CLK*/MX6UL_PAD_UART2_TX_DATA__GPIO1_IO20 0x100b0 /* CS*/;}; 编译内核和设备树 #加载环境 source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi #编译内核 make zImage -j16 #编译指定的设备树 make imx6ull-14x14-nand-4.3-480x272-c.dtb 修改spidev驱动 默认的spidev.c中是没有匹配你添加的设备的因此需要修改spidev.c代码增加compatible匹配。 /* The main reason to have this class is to make mdev/udev create the* /dev/spidevB.C character device nodes exposing our userspace API.* It also simplifies memory management.*/static struct class *spidev_class;//#ifdef CONFIG_OF static const struct of_device_id spidev_dt_ids[] {{ .compatible rohm,dh2228fv },{ .compatible yang,oledsh1106 },{}, }; MODULE_DEVICE_TABLE(of, spidev_dt_ids); //#endif 内核编译成功后更新内核和设备树文件。启动设备后在/sys/class/spidev下可以确认spidev枚举出了多少个spi设备。 设备树查看 查看设备树是否有新添加的节点 更新设备树到板子上后查看下是否有生成spi设备节点 开源测试工具 spidev驱动有现成的测试工具。其中一个常用的测试工具是spi_test它是spidev驱动自带的测试工具可以用于测试和调试SPI设备。spi_test可以通过命令行参数设置SPI设备的各种参数如设备文件、传输速率、字节顺序等。使用spi_test可以发送和接收SPI数据以验证spidev驱动的功能和性能。 在源码linux-imx-4.1.15-2.1.0-v2.7\Documentation\spi路径下有两个测试工具的源码文件spidev_fdx.c和spidev_test.c文件。可以直接交叉编译为可执行文件使用。这些工具都基于spidev通用设备驱动以及对应的ioctl命令实现可以方便的用来对spi的通用型驱动来进行测试。 编译方法 #加载环境 source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi #编译 $(CC) spidev_fdx.c -o spidev_fdx $(CC) spidev_test.c -o spidev_test 回环测试 首先将spi接口的MISO和MOSI接口短接。 其次编译测试代码 Documentation/spi/spidev_test.c 最后输出结果与输入相同即为正确。 其他资源 spidev的使用SPI用户态API_习惯就好zz的博客-CSDN博客 基于Linux使用spidev驱动OLED - 嵌入式技术 - 电子发烧友网 0.96寸OLED屏移植到搭载mx6ull的linux系统_AURORA1997的博客-CSDN博客 嵌入式Linux驱动开发——解决/sys/bus/spi/devices下没有对应的spi设备文件_spi-max-frequency_门牙会稍息的博客-CSDN博客 嵌入式Linux驱动开发——解决/sys/bus/spi/devices下没有对应的spi设备文件_spi-max-frequency_门牙会稍息的博客-CSDN博客 spidev0.0的正确打开方式_在内核开启spidev0_blog_xu的博客-CSDN博客 编写SPI设备驱动程序_spi程序怎么编程_Hilbert*^*的博客-CSDN博客 154 spidevSPI“万能”驱动_你板子冒烟了的博客-CSDN博客 i.MX6ULL驱动开发 | 14 - 基于 Linux SPI 驱动框架读取ICM-20608传感器_MCUlover666的技术博客_51CTO博客 设备树学习之九SPI设备注册过程_spi_lsb_first_kunkliu的博客-CSDN博客 https://www.cnblogs.com/lknlfy/p/3265019.html 设备树中的spi设备以及内核对spi节点的处理流程_linux下spi-irq_弋阳yoga的博客-CSDN博客 嵌入式Linux的两种SPI驱动方式_linux spidev_iot-lorawan的博客-CSDN博客
http://www.dnsts.com.cn/news/155972.html

相关文章:

  • 郑州网站建设做推广吗音乐类网站页面设计特点
  • 网站是什么东西宠物网站项目
  • 建设一个很大的视频网站需要多少钱江苏省建设斤网站
  • 广东省建网站公司wordpress使用七牛图床
  • 可以在几个 网站备案注册公司没有地址怎么弄
  • 3如何做网站推广青州市住房和城乡建设局网站
  • 网站降权怎么做网站建设原创软文
  • 广告模板网站上海建设工程交易服务中心
  • 金塔凯元建设集团有限公司官方网站设计网站有没有版权
  • 奎屯市网站oracle 网站开发
  • 对网站建设心得wordpress 随机标签云
  • 九江县网站建设代码生成器app下载
  • 可做宣传的网站都有哪些wordpress简约主题分享
  • 网站建设多少钱一平米网站权重怎么看
  • 贵州网站建设 零玖伍壹网络特色美食网站建设策划书
  • 深圳网络推广建站加快建设乡镇招商网站
  • 网站的整体风格包括如何做好网站建设
  • 上海市建设安装协会网站怎么创业做电商
  • 封面型网页网站有哪些用备份的网站代码做网站步骤
  • 上街三屏网站建设江苏省建设信息网
  • 网站脑图怎么做重庆装饰公司口碑十强
  • 网络建站优化科技网站后台添加图片链接
  • wordpress dux 4.0广州网站优化网站建设
  • 科技有限公司可以做网站建设吗?托管平台
  • 南阳南阳新区网站建设wordpress 分类信息模板
  • 网站建设基本流程包括企业网站开发报价表
  • wordpress走阿里云OSS内网整站优化
  • 做网站在电商网站支付接口
  • 成都网站建设优秀公司建筑公司企业章程
  • 如何创建一个自己的网站synology建设网站