This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[FAQ] [参考译文] [常见问题解答] AM62L:MSPM0–ADC 使用 SPI 连接 AM62L

Guru**** 2358920 points
Other Parts Discussed in Thread: AM62L, MSPM0L1306, SYSCONFIG, LP-MSPM0C1104, MSPM0C1104
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1509134/faq-am62l-mspm0-adc-attach-on-am62l-using-spi

器件型号:AM62L
Thread 中讨论的其他器件: MSPM0L1306SysConfigLP-MSPM0C1104MSPM0C1104

工具/软件:

硬件设置:

对于 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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    此示例还可以与其他 MSPM0 LaunchPad 配合使用。
    我们还与 LP-MSPM0C1104一起测试了该器件。

    大多数步骤与上述相同。

    硬件设置:

    对于 AM62L EVM:

    连接 Type-C 电源。

    将 JTAG XDS110的 UART 转 USB 和 USB 连接到您的计算机。

    对于 LP-MSPM0:

    将电源和 XDS110连接到您的计算机。

    将模拟信号输入连接到 LaunchPad MSPM0Cx 中的 J1_PA24 (ADC0_3)。

    对于板间连接:

    将 AM62L EVM 用户扩展连接器中的引脚28 (SPI1_D0_EXP)连接到 LaunchPad MSPM0Cx 中的 J2_PA4 (SPI_POCI)

    AM62L EVM   用户扩展连接器中的引脚29 (SPI1_D1_EXP)连接到 LaunchPad MSPM0Cx 中的 J2_PA18 (SPI_PICO)

    AM62L EVM   用户扩展连接器中的引脚27 (SPI1_CLK_EXP)连接到 LaunchPad MSPM0Cx 中的 J1_PA6 (SPI_CLK)

    AM62L EVM   用户扩展连接器中的引脚30 (SPI1_CS0_EXP)连接到 LaunchPad MSPM0Cx 中的 J2_PA17 (SPI_CS)

    软件 设置:

    对于 LP-MSPM0Cx:

    由于 LP-MSPM0Cx 上没有 RGB LED、因此用户应用程序稍作修改:
    e2e.ti.com/.../spi_5F00_peripheral_5F00_echo_5F00_interrupts.c

    在较新的 MSPM0 SDK 版本上、这 可能会产生构建错误。 若要解决此问题、请使用 CCS 中的 Resource Explorer 导入全新的 SPI_peripheral_echo_interrupts_LP_MSPM0C1104_nortos_ticlang 工程、然后:
    1.将 spi_peripheral_echo_interrupts.c 从 Beyond SDK 复制到新工程。
    2.将 SysConfig 设置复制到 Beyond SDK 中、以便在新工程中执行 ADC12、SPI、计时器和事件。

    与 AM62L 设置和运行应用程序相关的其他步骤相同。