Thread 中讨论的其他器件: MSPM0L1306、 SysConfig、 LP-MSPM0C1104、 MSPM0C1104
工具/软件:
硬件设置:
对于 AM62L EVM:
连接 Type-C 电源。
将 JTAG XDS110的 UART 转 USB 和 USB 连接到您的计算机。
对于 LP-MSPM0:
将电源和 XDS110连接到您的计算机。
将模拟信号输入连接到 LaunchPad MSPM0Lx 中的 J3_PA18 (ADC0_7)。
将模拟信号输入连接到 LaunchPad MSPM0Lx 中的 J3_PA16 (ADC0_8)(如果需要)。
对于板间连接:
将 AM62L EVM 用户扩展连接器中的引脚28 (SPI1_D0_EXP)连接到 LaunchPad MSPM0Lx 中的 J2_PA4 (SPI_POCI)。
将 AM62L EVM 用户扩展连接器中的引脚29 (SPI1_D1_EXP)连接到 LaunchPad MSPM0Lx 中的 J2_PA5 (SPI_PICO)。
将 AM62L EVM 用户扩展连接器中的引脚27 (SPI1_CLK_EXP)连接到 LaunchPad MSPM0Lx 中的 J1_PA6 (SPI_CLK)。
将 AM62L EVM 用户扩展连接器中的引脚30 (SPI1_CS0_EXP)连接到 LaunchPad MSPM0Lx 中的 J2_PA3 (SPI_CS (PWM))。
软件设置:
在 AM62L 上的 Linux 中启用 SPI
Linux 配置:
在 AM62L SDK 中的 ti-linux-kernel 存储库中应用以下补丁:
diff --git a/arch/arm64/boot/dts/ti/k3-am62l3-evm.dts b/arch/arm64/boot/dts/ti/k3- am62l3-evm.dts index f5cdb9420..6780d31c1 100644 --- a/arch/arm64/boot/dts/ti/k3-am62l3-evm.dts +++ b/arch/arm64/boot/dts/ti/k3-am62l3-evm.dts @@ -375,6 +375,15 @@ AM62PX_IOPAD(0x018c, PIN_INPUT, 0) /* (B9) MCASP0_AXR0 */ AM62PX_IOPAD(0x0188, PIN_INPUT, 0) /* (A9) MCASP0_AXR1 */ >; }; + + main_spi1_pins_default: main-spi1-pins-default { + pinctrl-single,pins = < + AM62LX_IOPAD(0x008c, PIN_INPUT, 4) /* (H22) SPI1_CLK */ + AM62LX_IOPAD(0x0080, PIN_INPUT, 4) /* (K22) SPI1_D0 */ + AM62LX_IOPAD(0x0084, PIN_INPUT, 4) /* (J23) SPI1_D1 */ + AM62LX_IOPAD(0x0088, PIN_INPUT, 4) /* (K23) SPI1_CS0 */ + >; + }; }; &main_uart0 { @@ -902,3 +911,26 @@ &mcasp0 { 0 0 0 0 >; }; + +&main_spi1 { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&main_spi1_pins_default>; + spidev@0 { + spi-max-frequency = <24000000>; + reg = <0>; + compatible = "rohm,dh2228fv"; + }; +}; + + +&main_i2c1 { + gpio@23 { + fet_sel { + gpio-hog; + gpios = <1 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "VOUT0_FET_SEL0"; + }; + }; +}; diff --git a/kernel/configs/ti_arm64_prune.config b/kernel/configs/ti_arm64_prune.config index 9bca0b9f3..7a19f5486 100644 --- a/kernel/configs/ti_arm64_prune.config +++ b/kernel/configs/ti_arm64_prune.config @@ -486,3 +486,4 @@ CONFIG_DVB_TDA665x=n CONFIG_DVB_DRX39XYJ=n CONFIG_DVB_CXD2099=n CONFIG_DVB_SP2=n +CONFIG_SPI_SPIDEV=y \ No newline at end of file
重新编译 Linux 并在 SD/eMMC 上安装映像、dtb 和模块。
用户空间应用程序:
在 Linux 用户空间中使用并编译以下 C 文件: https://github.com/TexasInstruments/Beyond-SDK/tree/main/am62x/MSPM0-ADC-RTC-Attach/MSPM0-ADC-Attach-SPI/Single%20Byte%20Single%20Channel%20SPI/Controller/AM62x%20-%20A53%20Core%20MAIN%20Domain
在 MSPM0Lx 的 Linux 中启用 SPI
请参阅本节 https://www.ti.com/document-viewer/lit/html/SLAAEJ0#GUID-08804ED8-50F6-486D-865C-CFBF1651387E/GUID-AE9E2CF5-CF8A-4813-A9A4-737A5EA4AB09 并导入 Single_Byte_Single_Channel_ SPI/Peripheral/MSPM0 CCS 工程。
在较新的 MSPM0 SDK 版本上、这 可能会产生构建错误。 若要解决此问题、请 使用 CCS 中的 Resource Explorer 导入全新的 spi_peripheral_echo_interrupts_LP_MSPM0L1306_nortos_ticlang 工程、然后:
1.将 spi_peripheral_echo_interrupts.c 从 Beyond SDK 复制到新工程。
2.将 SysConfig 设置复制到 Beyond SDK 中、以便在新工程中执行 ADC12、SPI、计时器和事件。
这应该没有错误。
运行演示
在 MSPM0L 上、按照 https://www.ti.com/document-viewer/lit/html/SLAAEJ0#GUID-1E37DB3D-FD4F-4A5C-A2CA-9730C78677D1/GUID-254DC168-0287-4E6D-B2DC-19A5F14F83CD 中给出的步骤3开始执行
在 AM62L 上、运行以下命令:
./spidev_adc_multibyte_multichannel -D /dev/spidev0.0 -s 12000000 -v