匿名
未登录
登录
百问网嵌入式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] has to be updated to: * configure cs-gpios and activate spi4 node * add [https://wiki.st.com/stm32mpu/wiki/SPI_overview#spidev spidev] configuration to spi4 node {{ReviewsComments|W1935: ABO: The properties #addess-cells and #size-cells are not required in the spi device. They are mandatory in the spi controller node, and in fact they are correctly present in stm32mp157c.dtsi, but not in the spi device. This is described in Documentation/devicetree/bindings/spi/spi-bus.txt }} {{ReviewsComments|W1938 FGA: Don't understand why you copy/paste the example already provided in [[SPI_device_tree_configuration#DT_configuration_-28board_level-29]]. There's no additional information here... Or maybe need to add better explanation on why it has to be updated for loopback testing ? * Configure the PE11 GPIO as the chip select by using '''cs-gpios ...''' * Configure the SPI MOSI/MISO/... pin as alternate function via [[Pinctrl_overview|pinctrl]] through pinctrl-0, pinctrl-1 and pinctrl-names * Activate SPI controller by setting status "okay" * Add a spidev child node ** Enable spidev by adding compatible "spidev"; ** Configure speed by setting ... ** 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 {{ReviewsComments|W1938 FGA: command result ? How to check it matches spi4 instance ?}} === 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工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志