S32K311 SPI communication sample project

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

S32K311 SPI communication sample project

1,114件の閲覧回数
gayathri123
Contributor I

can anyone support SPI_DMA configuration in s32k311 for tx and rx data

0 件の賞賛
返信
3 返答(返信)

1,083件の閲覧回数
VaneB
NXP TechSupport
NXP TechSupport

Hi @gayathri123 

Refer to the example code below. It should help as guidance for the implementation you intend to achieve.

Example S32K31 SPI multiple packet Transmit & Receive : solution for DMA Cache issue

 

BR, VaneB

0 件の賞賛
返信

1,035件の閲覧回数
gayathri123
Contributor I

gayathri123_0-1765988285652.pnggayathri123_1-1765988292018.png

but in your example code Enable Cache support is enabled under cache driver configuration not in MCL cache configuration like 2nd image

 

0 件の賞賛
返信

1,026件の閲覧回数
gayathri123
Contributor I

 

gayathri123_1-1765993708929.pnggayathri123_2-1765993719097.pnggayathri123_3-1765993725725.pnggayathri123_4-1765993733762.pnggayathri123_5-1765993740308.pnggayathri123_6-1765993749270.pnggayathri123_7-1765993756562.pnggayathri123_8-1765993765588.png

/*
* ExternalMemory.c
*
* Created on: Dec 13, 2025
* Author: Ajay Gupta
*/
#include "ExternalMemory.h"
#include "Siul2_Port_Ip.h"
#include "Siul2_Dio_Ip.h"
#include "Cache_Ip.h"
#include "Lpspi_Ip.h"
#include "CDD_Rm.h"
#include "Dma_Ip.h"
#include <string.h>
volatile bool g_spiTransferComplete = false;
volatile uint32_t g_W25Q_ID = 0;
#ifdef USE_NON_CHACHABLE_REGION
/* Allocated in non-cacheable RAM: No manual cache cleaning needed */
#pragma GCC section bss ".mcal_bss_no_cacheable"
__attribute__(( aligned(32) )) uint8_t RxBuffer[BCC_MSG_SIZE];
#pragma GCC section bss

#pragma GCC section data ".mcal_data_no_cacheable"
__attribute__(( aligned(32) )) uint8_t TxBuffer[BCC_MSG_SIZE] = {0};
#pragma GCC section data
#else
/* Allocated in cacheable RAM: Requires Cache_Ip_Clean/Invalidate */
__attribute__(( aligned(32) )) uint8_t RxBuffer[BCC_MSG_SIZE];
__attribute__(( aligned(32) )) uint8_t TxBuffer[BCC_MSG_SIZE];
#endif
/*
* winbond W25Q16JV - 16 megabits in size.

W25Q16 pins Spi pins in Mcu
Cs pin connected to Fcs(SPI2)
Data out connected to Miso(SPI2)
Data in connected to Mosi(SPI2)
Clock connected to clock(SPI2)

Standard(single)SPI has 4 pins: Clk, CS, Din, Dout.
this 16 megabits variant has the memory distributed among the 8192 programmable pages, each page being 256 bytes in size.
We can program 256 bytes at once.
we can't erase a single page but we can erase a grp of 16 pages which is called a sector and is 4kb in size that can be erased.
we can also erase a block which is a group of 128 pages(32Kb)or 256 pages(64Kb)

block diagram of memory:
for ex: we have 1 block which has 16 sectors, each sector is 4 kb in size and contains 16 pages. 1 block =16sector x 16 pages =256 pages.

in w25q16jv we have 32 blocks in total 256 pages for 1 block x 32 block=8192 pages.
*/

void lpspi_callback_dma(uint8 Instance, Lpspi_Ip_EventType Event)
{
if(Event == LPSPI_IP_EVENT_END_TRANSFER)
{
/* If cacheable, Invalidate ensures we fetch the fresh DMA data from main memory */
#ifndef USE_NON_CHACHABLE_REGION
Cache_Ip_InvalidateByAddr(CACHE_IP_CORE, CACHE_IP_DATA, (uint32)&RxBuffer[0U], BCC_MSG_SIZE);
#endif

g_spiTransferComplete = true;
}
else if (Event == LPSPI_IP_EVENT_FAULT)
{
g_spiTransferComplete = true;
}
}

 

/*
* Function Name: W25Q_Reset
* Description: Before starting a new session with the chip we should reset it.
* This would terminate any on going operation and the device will return to its default power-on state.
* It will lose all the current volatile settings, such as Volatile Status Register bits, Write Enable Latch (WEL) status, Program/Erase Suspend status, Read parameter setting (P7-P0) and Wrap Bit setting (W6-W4).
* To avoid the accidental Reset, a Reset command is made of 2 instructions. these Instructions, “Enable Reset (66h)” and “Reset (99h)” must be issues in a sequence. Once the Reset command is accepted by the device, the device will take approximately 30us to reset. During this period, no command will be accepted.
*/
Lpspi_Ip_StatusType W25Q_Reset(void)
{
Lpspi_Ip_StatusType status;

/* Enable Reset (0x66) */
memset(TxBuffer, 0, BCC_MSG_SIZE);
TxBuffer[0] = 0x66;
g_spiTransferComplete = false;

#ifndef USE_NON_CHACHABLE_REGION
Cache_Ip_CleanByAddr(CACHE_IP_CORE, CACHE_IP_DATA, TRUE, (uint32)&TxBuffer[0U], 1);
#endif

status = Lpspi_Ip_AsyncTransmit(&MASTER_EXTERNAL_DEVICE, TxBuffer, NULL, 1, lpspi_callback_dma);
if (status != LPSPI_IP_STATUS_SUCCESS) return status;
while(g_spiTransferComplete == false);

/* Reset (0x99) */
TxBuffer[0] = 0x99;
g_spiTransferComplete = false;

#ifndef USE_NON_CHACHABLE_REGION
Cache_Ip_CleanByAddr(CACHE_IP_CORE, CACHE_IP_DATA, TRUE, (uint32)&TxBuffer[0U], 1);
#endif

status = Lpspi_Ip_AsyncTransmit(&MASTER_EXTERNAL_DEVICE, TxBuffer, NULL, 1, lpspi_callback_dma);
if (status != LPSPI_IP_STATUS_SUCCESS) return status;
while(g_spiTransferComplete == false);

for (volatile uint32 i = 0; i < 5000; i++);

return LPSPI_IP_STATUS_SUCCESS;
}
Lpspi_Ip_StatusType W25Q_ReadID(void)
{
Lpspi_Ip_StatusType status;

memset(TxBuffer, 0, BCC_MSG_SIZE);
memset(RxBuffer, 0, BCC_MSG_SIZE);
TxBuffer[0] = 0x9F;
g_spiTransferComplete = false;

#ifndef USE_NON_CHACHABLE_REGION
Cache_Ip_CleanByAddr(CACHE_IP_CORE, CACHE_IP_DATA, TRUE, (uint32)&TxBuffer[0U], 4);
#endif

/* Send 1 cmd byte and receive 3 ID bytes */
status = Lpspi_Ip_AsyncTransmit(&MASTER_EXTERNAL_DEVICE, TxBuffer, RxBuffer, 4, lpspi_callback_dma);
if (status != LPSPI_IP_STATUS_SUCCESS) return status;

while(g_spiTransferComplete == false);


g_W25Q_ID = ((uint32_t)RxBuffer[1] << 16) | ((uint32_t)RxBuffer[2] << | (uint32_t)RxBuffer[3];

return LPSPI_IP_STATUS_SUCCESS;
}

 

 

 

 

/*
* ExternalMemory.h
*
* Created on: Dec 13, 2025
* Author: Ajay Gupta
*/

#ifndef EXTERNALMEMORY_EXTERNALMEMORY_H_
#define EXTERNALMEMORY_EXTERNALMEMORY_H_

#include <stdint.h>
#include <stdbool.h>
#include "Cache_Ip.h"
#include "Lpspi_Ip.h"
#include "CDD_Rm.h"
#include "Dma_Ip.h"

#define USE_NON_CHACHABLE_REGION 1
#define No_of_Blocks 32
#define BCC_MSG_SIZE 12U
#define MASTER_EXTERNAL_DEVICE Lpspi_Ip_DeviceAttributes_SpiExternalDevice_0_Instance_2
extern Lpspi_Ip_StatusType lpspi_status;
extern Lpspi_Ip_HwStatusType lpspi_hw_status;
extern volatile bool g_spiTransferComplete;
void lpspi_callback_dma(uint8 Instance, Lpspi_Ip_EventType Event);


Lpspi_Ip_StatusType W25Q_Reset (void);
Lpspi_Ip_StatusType W25Q_ReadID (void);
#endif /* EXTERNALMEMORY_EXTERNALMEMORY_H_ */

 

 

void SPI_DMA_Init(void)
{
    /* Initialize Dma */
    Dma_Ip_Init(&Dma_Ip_xDmaInitPB);
 
    /* Initialize Rm driver for using DmaMux*/
    Rm_Init(&Rm_Config);
 
    IntCtrl_Ip_EnableIrq(DMATCD0_IRQn);
    IntCtrl_Ip_EnableIrq(DMATCD1_IRQn);
 
    /* Initialise the LPSPI module*/
    lpspi_status = Lpspi_Ip_Init(&Lpspi_Ip_PhyUnitConfig_SpiPhyUnit_1_Instance_2);
 
    Lpspi_Ip_UpdateTransferMode(MASTER_EXTERNAL_DEVICE.Instance, LPSPI_IP_INTERRUPT);
}

clock and pin initialization also i have done can anyone check whether this configuration is correct

 

 

0 件の賞賛
返信
%3CLINGO-SUB%20id%3D%22lingo-sub-2263871%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ES32K311%20SPI%E9%80%9A%E4%BF%A1%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2263871%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3Es32k311%E3%81%AEtx%E3%81%A8rx%E3%83%87%E3%83%BC%E3%82%BF%E7%94%A8%E3%81%AESPI_DMA%E6%A7%8B%E6%88%90%E3%82%92%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E4%BA%BA%E3%81%AF%E3%81%84%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2264146%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20S32K311%20SPI%20communication%20sample%20project%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2264146%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F256645%22%20target%3D%22_blank%22%3E%40gayathri123%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%E4%BB%A5%E4%B8%8B%E3%81%AE%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E5%8F%82%E7%85%A7%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%E3%81%93%E3%82%8C%E3%81%AF%E3%80%81%E5%AE%9F%E7%8F%BE%E3%81%97%E3%82%88%E3%81%86%E3%81%A8%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E5%AE%9F%E8%A3%85%E3%81%AE%E3%82%AC%E3%82%A4%E3%83%80%E3%83%B3%E3%82%B9%E3%81%A8%E3%81%97%E3%81%A6%E5%BD%B9%E7%AB%8B%E3%81%A4%E3%81%AF%E3%81%9A%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2FS32K-Knowledge-Base%2FExample-S32K31-SPI-multiple-packet-Transmit-amp-Receive-solution%2Fta-p%2F2130091%22%20target%3D%22_blank%22%3ES32K31%20SPI%20%E8%A4%87%E6%95%B0%E3%83%91%E3%82%B1%E3%83%83%E3%83%88%E9%80%81%E5%8F%97%E4%BF%A1%E3%81%AE%E4%BE%8B%EF%BC%9ADMA%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E5%95%8F%E9%A1%8C%E3%81%AE%E8%A7%A3%E6%B1%BA%E7%AD%96%3C%2FA%3E%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3EBR%E3%80%81%E3%83%B4%E3%82%A7%E3%82%A4%E3%83%B3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2265244%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20S32K311%20SPI%20communication%20sample%20project%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2265244%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22gayathri123_1-1765993708929.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22gayathri123_1-1765993708929.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22gayathri123_1-1765993708929.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F370488i8E636331513493CD%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22gayathri123_1-1765993708929.png%22%20alt%3D%22gayathri123_1-1765993708929.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22gayathri123_2-1765993719097.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22gayathri123_2-1765993719097.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22gayathri123_2-1765993719097.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F370489i32A2B23A8E6774E2%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22gayathri123_2-1765993719097.png%22%20alt%3D%22gayathri123_2-1765993719097.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22gayathri123_3-1765993725725.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22gayathri123_3-1765993725725.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22gayathri123_3-1765993725725.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F370491iE237EF885B6C656F%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22gayathri123_3-1765993725725.png%22%20alt%3D%22gayathri123_3-1765993725725.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22gayathri123_4-1765993733762.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22gayathri123_4-1765993733762.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22gayathri123_4-1765993733762.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F370492i93B1DECD1C1F9433%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22gayathri123_4-1765993733762.png%22%20alt%3D%22gayathri123_4-1765993733762.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22gayathri123_5-1765993740308.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22gayathri123_5-1765993740308.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22gayathri123_5-1765993740308.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F370493i0163E7D2C3AA9F92%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22gayathri123_5-1765993740308.png%22%20alt%3D%22gayathri123_5-1765993740308.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22gayathri123_6-1765993749270.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22gayathri123_6-1765993749270.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22gayathri123_6-1765993749270.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F370494i10182F0D8C68B96D%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22gayathri123_6-1765993749270.png%22%20alt%3D%22gayathri123_6-1765993749270.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22gayathri123_7-1765993756562.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22gayathri123_7-1765993756562.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22gayathri123_7-1765993756562.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F370495i62B1B86217DAEC2D%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22gayathri123_7-1765993756562.png%22%20alt%3D%22gayathri123_7-1765993756562.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22gayathri123_8-1765993765588.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22gayathri123_8-1765993765588.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22gayathri123_8-1765993765588.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F370496i95DB70F970576F22%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22gayathri123_8-1765993765588.png%22%20alt%3D%22gayathri123_8-1765993765588.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%2F*%3CBR%20%2F%3E%20*%20%E5%A4%96%E9%83%A8%E3%83%A1%E3%83%A2%E3%83%AA.c%3CBR%20%2F%3E*%3CBR%20%2F%3E%20*%20%E4%BD%9C%E6%88%90%E6%97%A5%3A%202025%E5%B9%B412%E6%9C%8813%E6%97%A5%3CBR%20%2F%3E*%20%E8%91%97%E8%80%85%3A%20%E3%82%A2%E3%82%B8%E3%83%A3%E3%82%A4%E3%83%BB%E3%82%B0%E3%83%97%E3%82%BF%3CBR%20%2F%3E*%2F%3CBR%20%2F%3E%20%23include%20%22%E5%A4%96%E9%83%A8%E3%83%A1%E3%83%A2%E3%83%AA.h%22%3CBR%20%2F%3E%20%23include%20%22Siul2_Port_Ip.h%22%3CBR%20%2F%3E%20%23include%20%22Siul2_Dio_Ip.h%22%3CBR%20%2F%3E%23include%20%22Cache_Ip.h%22%3CBR%20%2F%3E%23include%20%22Lpspi_Ip.h%22%3CBR%20%2F%3E%23include%20%22CDD_Rm.h%22%3CBR%20%2F%3E%23include%20%22Dma_Ip.h%22%3CBR%20%2F%3E%23include%3CSTRING.H%3E%3CBR%20%2F%3E%E6%8F%AE%E7%99%BA%E6%80%A7%E3%83%96%E3%83%BC%E3%83%AB%20g_spiTransferComplete%20%3D%20false%3B%3CBR%20%2F%3E%E6%8F%AE%E7%99%BA%E6%80%A7%20uint32_t%20g_W25Q_ID%20%3D%200%3B%3CBR%20%2F%3E%20%23ifdef%20USE_NON_CHACHABLE_REGION%3CBR%20%2F%3E%20%2F*%20%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E4%B8%8D%E5%8F%AF%E8%83%BD%E3%81%AA%20RAM%20%E3%81%AB%E5%89%B2%E3%82%8A%E5%BD%93%E3%81%A6%E3%82%89%E3%82%8C%E3%81%BE%E3%81%99%3A%20%E6%89%8B%E5%8B%95%E3%81%A7%E3%81%AE%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E6%B6%88%E5%8E%BB%E3%81%AF%E4%B8%8D%E8%A6%81%E3%81%A7%E3%81%99%20*%2F%3CBR%20%2F%3E%20%23pragma%20GCC%20%E3%82%BB%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%20bss%20%22.mcal_bss_no_cacheable%22%3CBR%20%2F%3E__attribute__%20((aligned(32)%20))%20uint8_t%20RxBuffer%5BBCC_MSG_SIZE%5D%3B%3CBR%20%2F%3E%20%23pragma%20GCC%20%E3%82%BB%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%20bss%3C%2FSTRING.H%3E%3C%2FP%3E%3CP%3E%23pragma%20GCC%20%E3%82%BB%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%87%E3%83%BC%E3%82%BF%20%22.mcal_data_no_cacheable%22%3CBR%20%2F%3E__attribute__%20((aligned(32)%20))%20uint8_t%20TxBuffer%5BBCC_MSG_SIZE%5D%20%3D%20%7B0%7D%3B%3CBR%20%2F%3E%20%23pragma%20GCC%20%E3%82%BB%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%87%E3%83%BC%E3%82%BF%3CBR%20%2F%3E%EF%BC%83%E3%81%9D%E3%82%8C%E4%BB%A5%E5%A4%96%3CBR%20%2F%3E%2F*%20%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E5%8F%AF%E8%83%BD%E3%81%AA%20RAM%20%E3%81%AB%E5%89%B2%E3%82%8A%E5%BD%93%E3%81%A6%E3%82%89%E3%82%8C%E3%81%BE%E3%81%99%3A%20Cache_Ip_Clean%2FInvalidate%20%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%A7%E3%81%99%20*%2F%3CBR%20%2F%3E%20__attribute__%20((aligned(32)%20))%20uint8_t%20RxBuffer%5BBCC_MSG_SIZE%5D%3B%3CBR%20%2F%3E%20__attribute__%20((aligned(32)%20))%20uint8_t%20TxBuffer%5BBCC_MSG_SIZE%5D%3B%3CBR%20%2F%3E%20%23endif%3CBR%20%2F%3E%20%2F*%3CBR%20%2F%3E%20*%20winbond%20W25Q16JV%20-%20%E3%82%B5%E3%82%A4%E3%82%BA%E3%81%AF%2016%20%E3%83%A1%E3%82%AC%E3%83%93%E3%83%83%E3%83%88%E3%80%82%3C%2FP%3E%3CP%3EW25Q16%E3%83%94%E3%83%B3%20MCU%E3%81%AESpi%E3%83%94%E3%83%B3%3CBR%20%2F%3ECs%E3%83%94%E3%83%B3%E3%81%AFFcs(SPI2)%E3%81%AB%E3%82%B3%E3%83%8D%E3%82%AF%E3%83%86%E3%83%83%E3%83%89%3CBR%20%2F%3EMiso(SPI2)%E3%81%AB%E3%82%B3%E3%83%8D%E3%82%AF%E3%83%86%E3%83%83%E3%83%89%E3%81%95%E3%82%8C%E3%81%9F%E3%83%87%E3%83%BC%E3%82%BF%E5%87%BA%E5%8A%9B%3CBR%20%2F%3EMosi(SPI2)%E3%81%AB%E3%82%B3%E3%83%8D%E3%82%AF%E3%83%86%E3%83%83%E3%83%89%E3%81%95%E3%82%8C%E3%81%9F%E3%83%87%E3%83%BC%E3%82%BF%3CBR%20%2F%3E%E3%82%AF%E3%83%AD%E3%83%83%E3%82%AF%E3%82%92%E3%82%AF%E3%83%AD%E3%83%83%E3%82%AF%E3%81%AB%E3%82%B3%E3%83%8D%E3%82%AF%E3%83%86%E3%83%83%E3%83%89(SPI2)%3C%2FP%3E%3CP%3E%E6%A8%99%E6%BA%96(%E3%82%B7%E3%83%B3%E3%82%B0%E3%83%AB)SPI%20%E3%81%AB%E3%81%AF%E3%80%81Clk%E3%80%81CS%E3%80%81Din%E3%80%81Dout%20%E3%81%AE%204%20%E3%81%A4%E3%81%AE%E3%83%94%E3%83%B3%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3CBR%20%2F%3E%E3%81%93%E3%81%AE%2016%20%E3%83%A1%E3%82%AC%E3%83%93%E3%83%83%E3%83%88%E3%81%AE%E3%83%90%E3%83%AA%E3%82%A2%E3%83%B3%E3%83%88%E3%81%A7%E3%81%AF%E3%80%81%E3%83%A1%E3%83%A2%E3%83%AA%E3%81%8C%208192%20%E5%80%8B%E3%81%AE%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E5%8F%AF%E8%83%BD%E3%81%AA%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AB%E5%88%86%E6%95%A3%E3%81%95%E3%82%8C%E3%81%A6%E3%81%8A%E3%82%8A%E3%80%81%E5%90%84%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E3%82%B5%E3%82%A4%E3%82%BA%E3%81%AF%20256%20%E3%83%90%E3%82%A4%E3%83%88%E3%81%A7%E3%81%99%E3%80%82%3CBR%20%2F%3E%E4%B8%80%E5%BA%A6%E3%81%AB%20256%20%E3%83%90%E3%82%A4%E3%83%88%E3%82%92%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%20CAN%E3%80%82%3CBR%20%2F%3E1%20%E3%83%9A%E3%83%BC%E3%82%B8%E3%82%92%E6%B6%88%E5%8E%BB%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AF%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%81%8C%E3%80%81%E3%82%BB%E3%82%AF%E3%82%BF%E3%83%BC%E3%81%A8%E5%91%BC%E3%81%B0%E3%82%8C%E3%82%8B%204%20KB%20%E3%81%AE%E6%B6%88%E5%8E%BB%E5%8F%AF%E8%83%BD%E3%81%AA%E3%82%B5%E3%82%A4%E3%82%BA%E3%81%AE%2016%20%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%82%92%E6%B6%88%E5%8E%BB%20CAN%E3%80%82%3CBR%20%2F%3E128%E3%83%9A%E3%83%BC%E3%82%B8%EF%BC%8832KB%EF%BC%89%E3%81%BE%E3%81%9F%E3%81%AF256%E3%83%9A%E3%83%BC%E3%82%B8%EF%BC%8864KB%EF%BC%89%E3%81%AE%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%81%A7%E3%81%82%E3%82%8B%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%82%92%E6%B6%88%E5%8E%BB%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%82%82%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%E3%83%A1%E3%83%A2%E3%83%AA%E3%81%AE%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E5%9B%B3%3A%3CBR%20%2F%3E%E3%81%9F%E3%81%A8%E3%81%88%E3%81%B0%E3%80%8116%20%E5%80%8B%E3%81%AE%E3%82%BB%E3%82%AF%E3%82%BF%E3%83%BC%E3%82%92%E6%8C%81%E3%81%A4%201%20%E3%81%A4%E3%81%AE%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%81%8C%E3%81%82%E3%82%8A%E3%80%81%E5%90%84%E3%82%BB%E3%82%AF%E3%82%BF%E3%83%BC%E3%81%AE%E3%82%B5%E3%82%A4%E3%82%BA%E3%81%AF%204%20KB%20%E3%81%A7%E3%80%8116%20%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%8C%E5%90%AB%E3%81%BE%E3%82%8C%E3%81%BE%E3%81%99%E3%80%821%20%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%20%3D%2016%20%E3%82%BB%E3%82%AF%E3%82%BF%E3%83%BC%20x%2016%20%E3%83%9A%E3%83%BC%E3%82%B8%20%3D%20256%20%E3%83%9A%E3%83%BC%E3%82%B8%E3%80%82%3C%2FP%3E%3CP%3Ew25q16jv%20%E3%81%AB%E3%81%AF%E5%90%88%E8%A8%88%2032%20%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%80%811%20%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%20x%2032%20%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%20%3D%208192%20%E3%83%9A%E3%83%BC%E3%82%B8%E3%80%81%E5%90%88%E8%A8%88%20256%20%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3CBR%20%2F%3E*%2F%3C%2FP%3E%3CP%3Evoid%20lpspi_callback_dma(uint8%20%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%80%81Lpspi_Ip_EventType%20%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E6%83%85%E5%A0%B1)%3CBR%20%2F%3E%20%7B%3CBR%20%2F%3E%20if(%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E6%83%85%E5%A0%B1%20%3D%3D%20LPSPI_IP_EVENT_END_TRANSFER)%3CBR%20%2F%3E%20%7B%3CBR%20%2F%3E%20%2F*%20%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E5%8F%AF%E8%83%BD%E3%81%AA%E5%A0%B4%E5%90%88%E3%80%81Invalidate%20%E3%81%AB%E3%82%88%E3%82%8A%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%A1%E3%83%A2%E3%83%AA%E3%81%8B%E3%82%89%E6%9C%80%E6%96%B0%E3%81%AE%20DMA%20%E3%83%87%E3%83%BC%E3%82%BF%E3%81%8C%E5%8F%96%E5%BE%97%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%20*%2F%3CBR%20%2F%3E%20%23ifndef%20USE_NON_CHACHABLE_REGION%3CBR%20%2F%3E%20Cache_Ip_InvalidateByAddr(CACHE_IP_CORE%E3%80%81CACHE_IP_DATA%E3%80%81(uint32)%26amp%3BRxBuffer%5B0U%5D%E3%80%81BCC_MSG_SIZE)%3B%3CBR%20%2F%3E%20%23endif%3C%2FP%3E%3CP%3Eg_spiTransferComplete%20%3D%20true%3B%3CBR%20%2F%3E%20%7D%3CBR%20%2F%3E%E3%81%9D%E3%81%86%E3%81%A7%E3%81%AA%E3%81%84%E5%A0%B4%E5%90%88%20(%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E6%83%85%E5%A0%B1%20%3D%3D%20LPSPI_IP_EVENT_FAULT)%3CBR%20%2F%3E%20%7B%3CBR%20%2F%3E%20g_spiTransferComplete%20%3D%20true%3B%3CBR%20%2F%3E%20%7D%3CBR%20%2F%3E%20%7D%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%2F*%3CBR%20%2F%3E%20*%20%E9%96%A2%E6%95%B0%E5%90%8D%3A%20W25Q_Reset%3CBR%20%2F%3E%20*%20%E8%AA%AC%E6%98%8E%3A%20%E3%83%81%E3%83%83%E3%83%97%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E6%96%B0%E3%81%97%E3%81%84%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E9%96%8B%E5%A7%8B%E3%81%99%E3%82%8B%E5%89%8D%E3%81%AB%E3%80%81%E3%83%81%E3%83%83%E3%83%97%E3%82%92%E3%83%AA%E3%82%BB%E3%83%83%E3%83%88%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3CBR%20%2F%3E*%20%E3%81%93%E3%82%8C%E3%81%AB%E3%82%88%E3%82%8A%E3%80%81%E9%80%B2%E8%A1%8C%E4%B8%AD%E3%81%AE%E6%93%8D%E4%BD%9C%E3%81%AF%E3%81%99%E3%81%B9%E3%81%A6%E7%B5%82%E4%BA%86%E3%81%97%E3%80%81%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%81%AF%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%81%AE%E9%9B%BB%E6%BA%90%E3%82%AA%E3%83%B3%E7%8A%B6%E6%85%8B%E3%81%AB%E6%88%BB%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3CBR%20%2F%3E*%20%E6%8F%AE%E7%99%BA%E6%80%A7%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%20%E3%83%AC%E3%82%B8%E3%82%B9%E3%82%BF%20%E3%83%93%E3%83%83%E3%83%88%E3%80%81%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%81%BF%E6%9C%89%E5%8A%B9%E3%83%A9%E3%83%83%E3%83%81%20(WEL)%20%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E3%80%81%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%2F%E6%B6%88%E5%8E%BB%E4%B8%80%E6%99%82%E5%81%9C%E6%AD%A2%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E3%80%81%E8%AA%AD%E3%81%BF%E5%8F%96%E3%82%8A%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E8%A8%AD%E5%AE%9A%20(P7%20%EF%BD%9E%20P0)%E3%80%81%E3%83%A9%E3%83%83%E3%83%97%20%E3%83%93%E3%83%83%E3%83%88%E8%A8%AD%E5%AE%9A%20(W6%20%EF%BD%9E%20W4)%20%E3%81%AA%E3%81%A9%E3%80%81%E7%8F%BE%E5%9C%A8%E3%81%AE%E6%8F%AE%E7%99%BA%E6%80%A7%E8%A8%AD%E5%AE%9A%E3%81%AF%E3%81%99%E3%81%B9%E3%81%A6%E5%A4%B1%E3%82%8F%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%3CBR%20%2F%3E*%20%E8%AA%A4%E3%81%A3%E3%81%A6%E3%83%AA%E3%82%BB%E3%83%83%E3%83%88%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84%E3%82%88%E3%81%86%E3%81%AB%E3%80%81%E3%83%AA%E3%82%BB%E3%83%83%E3%83%88%20%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AF%202%20%E3%81%A4%E3%81%AE%E5%91%BD%E4%BB%A4%E3%81%A7%E6%A7%8B%E6%88%90%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%E3%81%93%E3%82%8C%E3%82%89%E3%81%AE%E5%91%BD%E4%BB%A4%E3%80%81%E3%80%8CEnable%20Reset%20(66h)%E3%80%8D%E3%81%8A%E3%82%88%E3%81%B3%E3%80%8CReset%20(99h)%E3%80%8D%E3%81%AF%E9%A0%86%E7%95%AA%E3%81%AB%E7%99%BA%E8%A1%8C%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%E3%83%AA%E3%82%BB%E3%83%83%E3%83%88%20%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%8C%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%81%AB%E3%82%88%E3%81%A3%E3%81%A6%E5%8F%97%E3%81%91%E5%85%A5%E3%82%8C%E3%82%89%E3%82%8C%E3%82%8B%E3%81%A8%E3%80%81%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%81%AE%E3%83%AA%E3%82%BB%E3%83%83%E3%83%88%E3%81%AB%E3%81%AF%E7%B4%84%2030%20%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E7%A7%92%E3%81%8B%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%E3%81%93%E3%81%AE%E6%9C%9F%E9%96%93%E4%B8%AD%E3%81%AF%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AF%E5%8F%97%E3%81%91%E4%BB%98%E3%81%91%E3%82%89%E3%82%8C%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%3CBR%20%2F%3E*%2F%3CBR%20%2F%3E%20Lpspi_Ip_StatusType%20W25Q_Reset(void)%3CBR%20%2F%3E%20%7B%3CBR%20%2F%3E%20Lpspi_Ip_StatusType%20%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%3B%3C%2FP%3E%3CP%3E%2F*%20%E3%83%AA%E3%82%BB%E3%83%83%E3%83%88%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B%20(0x66)%20*%2F%3CBR%20%2F%3E%20memset(TxBuffer%2C%200%2C%20BCC_MSG_SIZE)%3B%3CBR%20%2F%3E%E9%80%81%E4%BF%A1%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%5B0%5D%20%3D%200x66%3B%3CBR%20%2F%3E%20g_spiTransferComplete%20%3D%20%E5%81%BD%3B%3C%2FP%3E%3CP%3E%23ifndef%20USE_NON_CHACHABLE_REGION%3CBR%20%2F%3E%20Cache_Ip_CleanByAddr(CACHE_IP_CORE%E3%80%81CACHE_IP_DATA%E3%80%81TRUE%E3%80%81(uint32)%26amp%3BTxBuffer%5B0U%5D%E3%80%811)%3B%3CBR%20%2F%3E%20%23endif%3C%2FP%3E%3CP%3E%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%20%3D%20Lpspi_Ip_AsyncTransmit(%26amp%3BMASTER_EXTERNAL_DEVICE%2C%20TxBuffer%2C%20NULL%2C%201%2C%20lpspi_callback_dma)%3B%3CBR%20%2F%3E%20if%20(status%20!%3D%20LPSPI_IP_STATUS_SUCCESS)%20%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E3%82%92%E8%BF%94%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3CBR%20%2F%3E%20g_spiTransferComplete%20%E3%81%8C%20false%20%E3%81%AE%E5%A0%B4%E5%90%88%E3%80%81%3C%2FP%3E%3CP%3E%2F*%20%E3%83%AA%E3%82%BB%E3%83%83%E3%83%88%20(0x99)%20*%2F%3CBR%20%2F%3E%E9%80%81%E4%BF%A1%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%5B0%5D%20%3D%200x99%3B%3CBR%20%2F%3E%20g_spiTransferComplete%20%3D%20%E5%81%BD%3B%3C%2FP%3E%3CP%3E%23ifndef%20USE_NON_CHACHABLE_REGION%3CBR%20%2F%3E%20Cache_Ip_CleanByAddr(CACHE_IP_CORE%E3%80%81CACHE_IP_DATA%E3%80%81TRUE%E3%80%81(uint32)%26amp%3BTxBuffer%5B0U%5D%E3%80%811)%3B%3CBR%20%2F%3E%20%23endif%3C%2FP%3E%3CP%3E%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%20%3D%20Lpspi_Ip_AsyncTransmit(%26amp%3BMASTER_EXTERNAL_DEVICE%2C%20TxBuffer%2C%20NULL%2C%201%2C%20lpspi_callback_dma)%3B%3CBR%20%2F%3E%20if%20(status%20!%3D%20LPSPI_IP_STATUS_SUCCESS)%20%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E3%82%92%E8%BF%94%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3CBR%20%2F%3E%20g_spiTransferComplete%20%E3%81%8C%20false%20%E3%81%AE%E5%A0%B4%E5%90%88%E3%80%81%3C%2FP%3E%3CP%3E(%E6%8F%AE%E7%99%BA%E6%80%A7%20uint32%20i%20%3D%200%3B%20i%20%26lt%3B%205000%3B%20i%2B%2B)%3B%3C%2FP%3E%3CP%3ELPSPI_IP_STATUS_SUCCESS%20%E3%82%92%E8%BF%94%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3CBR%20%2F%3E%20%7D%3CBR%20%2F%3E%20Lpspi_Ip_StatusType%20W25Q_ReadID(void)%3CBR%20%2F%3E%20%7B%3CBR%20%2F%3E%20Lpspi_Ip_StatusType%20%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%3B%3C%2FP%3E%3CP%3Ememset(TxBuffer%2C%200%2C%20BCC_MSG_SIZE)%3B%3CBR%20%2F%3E%20memset(RxBuffer%2C%200%2C%20BCC_MSG_SIZE)%3B%3CBR%20%2F%3E%E9%80%81%E4%BF%A1%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%5B0%5D%20%3D%200x9F%3B%3CBR%20%2F%3E%20g_spiTransferComplete%20%3D%20%E5%81%BD%3B%3C%2FP%3E%3CP%3E%23ifndef%20USE_NON_CHACHABLE_REGION%3CBR%20%2F%3E%20Cache_Ip_CleanByAddr(CACHE_IP_CORE%E3%80%81CACHE_IP_DATA%E3%80%81TRUE%E3%80%81(uint32)%26amp%3BTxBuffer%5B0U%5D%E3%80%814)%3B%3CBR%20%2F%3E%20%23endif%3C%2FP%3E%3CP%3E%2F*%201%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%90%E3%82%A4%E3%83%88%E3%82%92%E9%80%81%E4%BF%A1%E3%81%97%E3%80%813%20ID%E3%83%90%E3%82%A4%E3%83%88%E3%82%92%E5%8F%97%E4%BF%A1%E3%81%99%E3%82%8B%20*%2F%3CBR%20%2F%3E%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%20%3D%20Lpspi_Ip_AsyncTransmit(%26amp%3BMASTER_EXTERNAL_DEVICE%2C%20TxBuffer%2C%20RxBuffer%2C%204%2C%20lpspi_callback_dma)%3B%3CBR%20%2F%3E%20if%20(status%20!%3D%20LPSPI_IP_STATUS_SUCCESS)%20%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E3%82%92%E8%BF%94%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3Eg_spiTransferComplete%20%E3%81%8C%20false%20%E3%81%AE%E5%A0%B4%E5%90%88%E3%80%81%3C%2FP%3E%3CP%3E%3CBR%20%2F%3Eg_W25Q_ID%20%3D%20((uint32_t)RxBuffer%5B1%5D%20%26lt%3B%26lt%3B%2016)%20%7C%20((uint32_t)RxBuffer%5B2%5D%20%26lt%3B%26lt%3B%20%3CLI-EMOJI%20id%3D%22lia_smiling-face-with-sunglasses%22%20title%3D%22%3Asmiling_face_with_sunglasses%3A%22%3E%3C%2FLI-EMOJI%3E%20%7C%20(uint32_t)RxBuffer%5B3%5D%3B%3C%2FP%3E%3CP%3ELPSPI_IP_STATUS_SUCCESS%20%E3%82%92%E8%BF%94%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3CBR%20%2F%3E%20%7D%3C%2FP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CP%3E%2F*%3CBR%20%2F%3E%20*%20%E5%A4%96%E9%83%A8%E3%83%A1%E3%83%A2%E3%83%AA.h%3CBR%20%2F%3E*%3CBR%20%2F%3E%20*%20%E4%BD%9C%E6%88%90%E6%97%A5%3A%202025%E5%B9%B412%E6%9C%8813%E6%97%A5%3CBR%20%2F%3E*%20%E8%91%97%E8%80%85%3A%20%E3%82%A2%E3%82%B8%E3%83%A3%E3%82%A4%E3%83%BB%E3%82%B0%E3%83%97%E3%82%BF%3CBR%20%2F%3E*%2F%3C%2FP%3E%3CP%3E%23ifndef%20%E5%A4%96%E9%83%A8%E3%83%A1%E3%83%A2%E3%83%AA_%E5%A4%96%E9%83%A8%E3%83%A1%E3%83%A2%E3%83%AA_H_%3CBR%20%2F%3E%20%23EXTERNALMEMORY_EXTERNALMEMORY_H_%20%E3%82%92%E5%AE%9A%E7%BE%A9%E3%81%97%E3%81%BE%E3%81%99%3C%2FP%3E%3CP%3E%23include%20%3CSTDINT.H%3E%3CBR%20%2F%3E%23include%20%3CSTDBOOL.H%3E%3CBR%20%2F%3E%23include%20%22Cache_Ip.h%22%3CBR%20%2F%3E%23include%20%22Lpspi_Ip.h%22%3CBR%20%2F%3E%23include%20%22CDD_Rm.h%22%3CBR%20%2F%3E%23include%20%22Dma_Ip.h%22%3C%2FSTDBOOL.H%3E%3C%2FSTDINT.H%3E%3C%2FP%3E%3CP%3E%23USE_NON_CHACHABLE_REGION%201%20%E3%82%92%E5%AE%9A%E7%BE%A9%E3%81%97%E3%81%BE%E3%81%99%3CBR%20%2F%3E%23%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E6%95%B0%2032%20%E3%82%92%E5%AE%9A%E7%BE%A9%E3%81%97%E3%81%BE%E3%81%99%3CBR%20%2F%3E%23BCC_MSG_SIZE%2012U%20%E3%82%92%E5%AE%9A%E7%BE%A9%E3%81%99%E3%82%8B%3CBR%20%2F%3E%23MASTER_EXTERNAL_DEVICE%20Lpspi_Ip_DeviceAttributes_SpiExternalDevice_0_Instance_2%20%E3%82%92%E5%AE%9A%E7%BE%A9%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3CBR%20%2F%3Eextern%20Lpspi_Ip_StatusType%20lpspi_status%3B%3CBR%20%2F%3Eextern%20Lpspi_Ip_HwStatusType%20lpspi_hw_status%3B%3CBR%20%2F%3Eextern%20volatile%20bool%20g_spiTransferComplete%3B%3CBR%20%2F%3Evoid%20lpspi_callback_dma(uint8%20%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%80%81Lpspi_Ip_%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E6%83%85%E5%A0%B1Type%20%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E6%83%85%E5%A0%B1)%3B%3C%2FP%3E%3CP%3E%3CBR%20%2F%3ELpspi_Ip_StatusType%20W25Q_Reset%20(%E7%84%A1%E5%8A%B9)%3B%3CBR%20%2F%3E%20Lpspi_Ip_StatusType%20W25Q_ReadID%20(%E7%84%A1%E5%8A%B9)%3B%3CBR%20%2F%3E%20%23endif%20%2F*%20%E5%A4%96%E9%83%A8%E3%83%A1%E3%83%A2%E3%83%AA_%E5%A4%96%E9%83%A8%E3%83%A1%E3%83%A2%E3%83%AA_H_%20*%2F%3C%2FP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CDIV%3Evoid%20SPI_DMA_Init(void)%3C%2FDIV%3E%3CDIV%3E%7B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20DMA%20%E3%82%92%E5%88%9D%E6%9C%9F%E5%8C%96%E3%81%99%E3%82%8B%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EDma_Ip_Init(%26amp%3BDma_Ip_xDmaInitPB)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20DmaMux%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AB%20Rm%20%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%82%92%E5%88%9D%E6%9C%9F%E5%8C%96%E3%81%97%E3%81%BE%E3%81%99*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ERm_Init(%26amp%3BRm_Config)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EIntCtrl_Ip_EnableIrq(DMATCD0_IRQn)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EIntCtrl_Ip_EnableIrq(DMATCD1_IRQn)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20LPSPI%20%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%82%92%E5%88%9D%E6%9C%9F%E5%8C%96%E3%81%97%E3%81%BE%E3%81%99*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Elpspi_status%20%3D%20Lpspi_Ip_Init(%26amp%3BLpspi_Ip_PhyUnitConfig_SpiPhyUnit_1_Instance_2)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ELpspi_Ip_UpdateTransferMode(MASTER_EXTERNAL_DEVICE.%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%80%81LPSPI_IP_INTERRUPT)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%7D%3C%2FDIV%3E%3CP%3E%E3%82%AF%E3%83%AD%E3%83%83%E3%82%AF%E3%81%A8%E3%83%94%E3%83%B3%E3%81%AE%E5%88%9D%E6%9C%9F%E5%8C%96%E3%82%82%E8%A1%8C%E3%81%84%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%E3%81%93%E3%81%AE%E6%A7%8B%E6%88%90%E3%81%8C%E6%AD%A3%E3%81%97%E3%81%84%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8BCAN%E3%81%8C%E7%A2%BA%E8%AA%8D%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F%3C%2FP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2265178%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20S32K311%20SPI%20communication%20sample%20project%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2265178%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22gayathri123_0-1765988285652.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22gayathri123_0-1765988285652.png%22%20style%3D%22width%3A%20374px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F370469iBF76D8F91071F893%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22gayathri123_0-1765988285652.png%22%20alt%3D%22gayathri123_0-1765988285652.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22gayathri123_1-1765988292018.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22gayathri123_1-1765988292018.png%22%20style%3D%22width%3A%20322px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F370470iE43B14B993412770%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22gayathri123_1-1765988292018.png%22%20alt%3D%22gayathri123_1-1765988292018.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%E3%81%97%E3%81%8B%E3%81%97%E3%80%81%E3%81%82%E3%81%AA%E3%81%9F%E3%81%AE%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%82%B3%E3%83%BC%E3%83%89%E3%81%A7%E3%81%AF%E3%80%81%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AE%E6%9C%89%E5%8A%B9%E5%8C%96%E3%81%AF%E3%80%812%E7%95%AA%E7%9B%AE%E3%81%AE%E7%94%BB%E5%83%8F%E3%81%AE%E3%82%88%E3%81%86%E3%81%AAMCL%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E6%A7%8B%E6%88%90%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%8F%E3%80%81%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E6%A7%8B%E6%88%90%E3%81%A7%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E