器件型号: J721EXCPXEVM
我们将 TPM 连接到 MCU SPI1、而 MCU SPI1 在使用 psdk7 时工作正常:
TPM_TIS_SPI spi2.0:2.0 TPM(设备 ID 0x1B、rev-id 22)
dts 和 dtsi 配置为:
&mcu_mcspi1{
状态=“正常“;
TPM_TIS@0{
兼容=“TCG、TPM_TIS-SPI“;
reg =<0>;
SPI-max-frequency =< 4000000>;
状态=“正常“;
};
};
mcu_mcspi1:spi@40310000{
兼容=“ti、am654-mcspi“、“ti、OMAP4-mcspi“;
REG =<0x0 0x40310000 0x0 0x400>;
中断= ;
Clocks =<&K3_CLKS 274 1>;
电源域=<&K3_PDS 274 TI_SCI_PD_EXCLUSTED>;
SPI1-linkdis;
#address-cells =<1>;
#size-cells =<0>;
};
RESET 引脚处于 GPIO 模式、R5 将其设置为在早期阶段输出高电平。 我们侧没有引脚多路复用。
使用 psdk10 时、我们收到超时错误:
TPM_TIS_SPI:spi2.0 探测失败、错误为–110
我们保持与 arch/arm64/boot/dts/ti/k3-j721e-mcu-wakeup.dtsi 相同
MCU_SPI1:SPI@40310000{
兼容=“ti、am654-mcspi“、“ti、OMAP4-mcspi“;
REG =<0x00 0x040310000 0x00 0x400>;
中断= ;
#address-cells =<1>;
#size-cells =<0>;
电源域=<&K3_PDS 275 TI_SCI_PD_EXCLUSTE>;
Clocks =<&K3_CLKS 275 0>;
STATUS =“已禁用“;
};
我们在自己的 dts 文件中配置节点:
&MCU_SPI1{
pinctrl-names =“default";“;
pinctrl-0 =<&MCU_SPI1_pins_default>;
TI、spi-num-cs =<1>;
状态=“正常“;
tpm0:tpm_tis@0{
兼容=“TCG、TPM_TIS-SPI“;
reg =<0>;
SPI-max-frequency =< 4000000>;
状态=“正常“;
此外、在 wkup_pmx0 中配置 SPI 引脚多路复用:
J721E_WKUP_IOPAD (0xb0、PIN_OUTPUT、0)
J721E_WKUP_IOPAD (0xbc、PIN_OUTPUT_PULLUP、0)
J721E_WKUP_IOPAD (0xb4、PIN_INPUT_PULLUP、0)
J721E_WKUP_IOPAD (0xb8、PIN_OUTPUT、0)
RESET 引脚(在 MAIN 域中)配置为 GPIO、也将其设置为输出高电平。 我还删除了 wkupgpio0 到 3 的所有 GPIO 配置、 并通过 CONFIG 4 SPI 引脚验证为 GPIO 模式、我可以使用 GPIO 命令设置为高电平和低电平、以确保没有人保持这些引脚。
在加载子之前、我测量了 Cs、rst、VDD 均为 3.3V。 但是、无论添加 tpm0 节点还是使用 spidev 节点、我都没有看到任何 RX、但我确实可以看到捕获的数据。
我尝试使用较低的频率和不同的模式、没有什么帮助。 我还尝试添加 SPI1-linkdis、仍然没有 RX、捕获波也是相同的。
我附上了 TPM 的示意图、并在启用 TPM 节点后进行捕获。 蓝色是 cs、紫色是时钟、绿色是数据、SDS00012.bmp 是 mosi 数据、SDS00015.bmp 是 MISO 数据。(我上载 bmp 文件有问题,我将尝试压缩它并在下一条消息中进行更新。)
我尝试在驱动程序中打印出 Rx 缓冲区内容、它也是零。 我不确定是否使用 config 注册有问题? 

