匿名
未登录
登录
百问网嵌入式Linux wiki
搜索
查看“How to use SPI”的源代码
来自百问网嵌入式Linux wiki
名字空间
页面
讨论
更多
更多
页面选项
Read
查看源代码
历史
←
How to use SPI
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
__TOC__ <br /> 或许可以给这篇文章改个名字: * 准确地说,这是针对Linux的 ? * 如何从userland使用SPI?(使用 "spidev": SPI设备用户空间API) 我们需要总结一下吗? ==Purpose== 本文介绍如何使用SPI。[[SPI overview]] 文章中描述了SPI概述。 <br/> 本文介绍了将外围设备分配给Linux<sup>®</sup>时如何使用SPI * 如何通过板设备树配置SPI设备(使用“ spidev”的示例) * 如何在用户区中执行数据传输 也许可以细化为TOC * 1 目的 * 2 配置(DT,内核,板卡连接) * 3 用户领域的数据传输 == SPI Loop between MOSI and MISO == 也许在这里添加几行来说明SPI循环的重要性 同意,看起来像是这里的示例,但对自定义SPI用户登陆有效吗? 详细说明...<br/> 也可以在 [[#Simple data transfer]]之前移动 短路SPI总线的MISO和MOSI线以建立环回,使总线可以接收其发送的相同数据。 快速执行基本测试和执行性能测试很有趣。 === Board connections === 合并到以前的描述? 以上冗余连接MISO和MOSI线... 必须添加一根导线来连接MISO和MOSI引脚(STM32MP157X-DKX ARDUINO连接器上的D12和D11引脚) 可能需要添加level2“配置”一章作为前提: * DT配置板 * 内核menuconfig(SPI_SPIDEV),链接到[[#Kernel configuration]]或在此处提及: Device Drivers ---> SPI support ---> <*> User mode SPI device driver support === DT configuration (board level) === [[https://wiki.st.com/stm32mpu/wiki/SPI_device_tree_configuration Board DT configuration]] 必须更新为: * 配置cs-gpios并激活spi4节点 * 将[[https://wiki.st.com/stm32mpu/wiki/SPI_overview#spidev spidev]] 配置添加到spi4节点 spi设备中不需要属性#addess-cells和#size-cells。它们在spi控制器节点中是必需的,实际上它们正确存在于stm32mp157c.dtsi中,但在spi设备中却不存在。 在Documentation/ devicetree / bindings / spi / spi-bus中对此进行了描述。 不明白为什么要复制/粘贴[[SPI_device_tree_configuration#DT_configuration_-28board_level-29]]中已经提供的示例。 这里没有更多的信息。 还是需要对为何必须对其进行回送测试进行更新进行更好的解释? * 通过使用'''cs-gpios ...'''将PE11 GPIO配置为芯片选择 * 通过pinctrl-0,pinctrl-1和pinctrl名称,通过[[Pinctrl_overview|pinctrl]]将SPI MOSI / MISO / ...引脚配置为备用功能 * 通过将状态设置为“ okay”激活SPI控制器 * 添加一个spidev子节点 ** 通过添加兼容的“ spidev”来启用spidev; ** 通过设置配置速度... ** Also a note on unit-address (@0) / reg <0> / cs-gpio index/number?; &spi4 { pinctrl-names = "default", "sleep"; pinctrl-0 = <&spi4_pins_a>; pinctrl-1 = <&spi4_sleep_pins_a>; status = "okay"; cs-gpios = <&gpioe 11 0>; spidev@0{ compatible = "spidev"; reg = <0>; spi-max-frequency = <4000000>; #address-cells = <1>; #size-cells = <0>; }; }; === Simple data transfer === {{Board$}} echo -ne "\xAA\xBB" > /dev/spidev0.0 {{Board$}} more /dev/spidev0.0 === Data transfer with spidev_test === The spidev_test tool, from the Linux<sup>®</sup> kernel, provides a test tool for [https://wiki.st.com/stm32mpu/wiki/SPI_overview#spidev spidev]. ==== Source code location ==== The Linux<sup>®</sup> kernel spidev_test tool source code can be found under tools/spi<ref name="spidev_test source">{{CodeSource | Linux kernel | tools/spi}}, Linux<sup>®</sup> spi source code directory</ref>. ==== spidev_test compilation ==== This tool is not compiled by default when compiling the Linux kernel for the target board. It can be compiled independently: [[How to build Linux kernel user space tools]] and then installed on the target. ==== List the spidev options ==== The ''spidev_test'' tool options can be listed: {{Board$}} spidev_test -h Usage: spidev_test [-DsbdlHOLC3vpNR24SItx] -D --device device to use (default /dev/spidev1.1) -s --speed max speed (Hz) -d --delay delay (usec) -b --bpw bits per word -i --input input data from a file (e.g. "test.bin") -o --output output data to a file (e.g. "results.bin") -l --loop loopback -H --cpha clock phase -O --cpol clock polarity -L --lsb least significant bit first -C --cs-high chip select active high -3 --3wire SI/SO signals shared -v --verbose Verbose (show tx buffer) -p Send data (e.g. "1234\xde\xad") -N --no-cs no chip select -R --ready slave pulls low to pause -2 --dual dual transfer -4 --quad quad transfer -S --size transfer size -I --iter iterations -t --txonly simplex tx transfer -r --rxonly simplex rx transfer ==== Example to transfer 32 bytes in full-duplex ==== {{Board$}} spidev_test -D /dev/spidev0.0 -v spi mode: 0x0 bits per word: 8 max speed: 500000 Hz (500 KHz) TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.... .................. . RX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D | ......@.... .................. . ==References== <references /> <noinclude> [[Category:SPI|3]] </noinclude>
该页面使用的模板:
模板:Board$
(
查看源代码
)
模板:CodeSource
(
查看源代码
)
返回至
How to use SPI
。
导航
导航
WIKI首页
官方店铺
资料下载
交流社区
所有页面
所有产品
MPU-Linux开发板
MCU-单片机开发板
Linux开发系列视频
单片机开发系列视频
所有模块配件
Wiki工具
Wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志