SPI 在一些高速通訊中能用到,特別是用於存放韌體,不妨來試試看 SPI 通訊。
一、引腳分佈
S32K312 的 SPI 分為 Flexio_SPI 和 LPSPI,前者通常用於 IO 模擬,本次使用 LPSPI 進行通信。查看原理圖可以看到 J26 有 LPSPI1 的引腳。
| LPSPI1 | 輸入/輸出 | MSCR |
| SCK | PTB14 | 46 |
| 罪 | PTB15 | 47 |
| 南方 | PTB16 | 48 |
| PCS3 | PTB17 | 49 |
二、模組配置
同樣新建專案後,雙擊 .mex 進入模組配置,比生成相應的初始配置程式碼更方便。進入後,首先添加 Port 和 DIO 模組,在 Port 模組中配置 4 條線的第 1 功能。
同時按照上一章的 IO 分布依序配置晶片引腳。
我們以中斷方式觸發,所以IntCtrl_IP也要加入進來,
配置完 IO 引腳後,接著添加第 2 復用功能,也就是 LPSPI 功能,切換到 SpiDriver 頁面,此處的 LPSPI1_PCS3 需要切換成 PCS3,其他可以保持預設值。
SpiGeneral頁同樣要確保是LPSPI1和SpiMaster,
配完後同樣是生成初始程式碼。
三、工程編輯
我們操作SpiMaster的主要介面在Lpspi_Ip.h、Lpspi_Ip.c裡,具體有Lpspi_Init/Lpspi_SyncTransmit/Lpspi_AsyncTransmit/Lpspi_Ip_UpdateTransferMode函數。在主函數中添加以下程式碼:
#include "Clock_Ip.h"
#include "Siul2_Port_Ip.h"
#include "Siul2_Dio_Ip.h"
#include "IntCtrl_Ip.h"
#include "Lpspi_Ip.h"
#include "Lpspi_Ip_Types.h"
uint8_t txBuff[]={0x11,0x22,0x33,0x44};
uint8_t rxBuff[4];
void LPSPI_SPI_IP_1_IRQHandler()
{
}
int main(void)
{
/* 在這裡撰寫您的程式碼 */
Clock_Ip_Init(Clock_Ip_aClockConfig);
Siul2_Port_Ip_Init(NUM_OF_CONFIGURED_PINS_PortContainer_0_BOARD_InitPeripherals,g_pin_mux_InitConfigArr_PortContainer_0_BOARD_InitPeripherals);
IntCtrl_Ip_Init(&IntCtrlConfig_0);
Lpspi_Ip_Init(&Lpspi_Ip_PhyUnitConfig_SpiPhyUnit_0_Instance_1);
IntCtrl_Ip_InstallHandler(LPSPI1_IRQn, LPSPI_SPI_IP_1_IRQHandler, NULL_PTR);
IntCtrl_Ip_EnableIrq(LPSPI1_IRQn);
Lpspi_Ip_UpdateTransferMode(Lpspi_Ip_DeviceAttributes_SpiExternalDevice_0_Instance_1.Instance,LPSPI_IP_INTERRUPT);
while(1)
{
Lpspi_Ip_SyncTransmit(&Lpspi_Ip_DeviceAttributes_SpiExternalDevice_0_Instance_1,txBuff,rxBuff,4,0xff);
Siul2_Dio_Ip_TogglePins(LED_BLUE_PORT, (1 << LED_BLUE_PIN));
TestDelay(5000000);
//Lpspi_Ip_AsyncTransmit(&Lpspi_Ip_DeviceAttributes_SpiExternalDevice_0_Instance_1,txBuff,rxBuff,4,NULL_PTR);
//while(LPSPI_IP_IDLE==Lpspi_Ip_GetStatus(Lpspi_Ip_DeviceAttributes_SpiExternalDevice_0_Instance_1.Instance)){}
}
return exit_code;
}
同樣的操作編譯、模擬,這裡波形有問題:

此文章來自「S32K312 開發板評測活動」測評者:明祥軍
歡迎在博文下方留言評論,我們會及時回覆您的問題。
如有更多需求,歡迎聯繫大聯大世平集團 ATU 部門:atu.sh@wpi-group.com 作者:WPIg
更多資訊,請掃描 QR 碼關注我們!
評論