首页 > 人工智能 > > 如何实现 i.MX8MPM核SPI间的通讯
CLOCK_SetRootMux(kCLOCK_RootEcspi2, kCLOCK_EcspiRootmuxSysPll1); //SPI2总线时钟使用PLL1-800MHz CLOCK_SetRootDivider(kCLOCK_RootEcspi2, 2U, 5U); //分频因子为2*5=10,设置SPI2总线时钟为80MHz
IOMUXC_SetPinMux(IOMUXC_ECSPI2_MISO_ECSPI2_MISO, 0U); // SPI2-MISO IOMUXC_SetPinMux(IOMUXC_ECSPI2_MOSI_ECSPI2_MOSI, 0U); // SPI2-MOSI IOMUXC_SetPinMux(IOMUXC_ECSPI2_SCLK_ECSPI2_SCLK, 0U); // SPI2-SCLK IOMUXC_SetPinMux(IOMUXC_ECSPI2_SS0_ECSPI2_SS0, 0U); // SPI2-SSO
#define TRANSFER_BAUDRATE 500000U // 速率 500K
config->burstLength = 8; // 数据长度 8bit
config->clockInactiveState = kECSPI_ClockInactiveStateLow; // 时钟SCL: 活动时低电平,空闲时高电平 config->dataLineInactiveState = kECSPI_DataLineInactiveStateLow;// 数据MOSI&MISO: 活动时低电平,空闲时高电平 config->chipSlectActiveState = kECSPI_ChipSelectActiveStateLow;// 片选SS: 低电平选中,高电平无效 config->polarity = kECSPI_PolarityActiveHigh; // 时钟信号极性,即CPOL为0的话 SCLK高电平有效(空闲的时候为低电平),为1的话SCLK低电平有效(空闲的时候为高电平)。 config->phase = kECSPI_ClockPhaseFirstEdge; // 时钟相位,即CPHA为0的话串行时钟的第一个跳变沿(上升沿或下降沿)采集数据,为1的话串行时钟的第二个跳变沿(上升沿或下降沿)采集数据。
config->channelConfig.channelMode = kECSPI_Master; // 主模式
config->channel = kECSPI_Channel0; // 通道0
Config->enableLoopBack = false; // 不回环,使用外部管脚
ECSPI_MasterTransferNonBlocking(EXAMPLE_ECSPI_MASTER_BASEADDR, &g_m_handle, &masterXfer); //主模式中断方式发送数据
for (i = 0U; i < TRANSFER_SIZE; i++) { if (masterTxData[i] != masterRxData[i]) { errorCount++; } }
config->channelConfig.channelMode = kECSPI_Slave; //从模式
ECSPI_SlaveTransferNonBlocking(EXAMPLE_ECSPI_SLAVE_BASEADDR, &g_s_handle, &slaveXfer); //从模式中断方式接收数据
&ecspi2 { #address-cells = <1>; #size-cells = <0>; fsl,spi-num-chipselects = <1>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_ecspi2 &pinctrl_ecspi2_cs>; cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>; status = "okay"; spidev1: spi@0 { reg = <0>; compatible = "rohm,dh2228fv"; spi-max-frequency = <500000>; }; }; pinctrl_ecspi2: ecspi2grp { fsl,pins = < MX8MP_IOMUXC_ECSPI2_SCLK__ECSPI2_SCLK 0x82 MX8MP_IOMUXC_ECSPI2_MOSI__ECSPI2_MOSI 0x82 MX8MP_IOMUXC_ECSPI2_MISO__ECSPI2_MISO 0x82 >; }; pinctrl_ecspi2_cs: ecspi2cs { fsl,pins = < MX8MP_IOMUXC_ECSPI2_SS0__GPIO5_IO13 0x40000 >; };
开发板1--SPI主模式 | 开发板2--SPI从模式 | ||
管脚名称 | 开发板位置 | 管脚名称 | 开发板位置 |
MISO | P40-10 | MISO | P40-10 |
MOSI | P40-8 | MOSI | P40-8 |
SCK | P40-1 | SCK | P40-1 |
SS0 | P40-3 | SS0 | P40-3 |
GND | P40-4/P40-7 | GND | P40-4/P40-7 |


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69989353/viewspace-3120689/ ,如需转载,请注明出处,否则将追究法律责任。