SPI callback event

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

SPI callback event

跳至解决方案
528 次查看
chris_010
Contributor II

hi, when  using spi callback function, I meet a trouble, need some help.

 my code description: I use LPSI0 as slave to communicate with external device,using interrupt mode.here is my code:

callback function defined:

void lpspi_callback_int(uint8 Instance, Lpspi_Ip_EventType Event)
{
Event_global = Event;
 
if(Event ==LPSPI_IP_EVENT_END_TRANSFER)
{
// Cache_Ip_InvalidateByAddr(CACHE_IP_CORE,CACHE_IP_DATA, (uint32)&rxBuffer[0U], 8);
// read data from rxBuffer
t++;
__asm volatile ("nop");
 
}
else if (Event ==LPSPI_IP_EVENT_FAULT)
{
__asm volatile ("nop");
 
}
}
 
start receive data:
 
lpspi_status = Lpspi_Ip_AsyncTransmit(&SLAVE_EXTERNAL_DEVICE_1, TxSlaveBuffer, RxSlaveBuffer, NUMBER_OF_BYTES, lpspi_callback_int);
 
 

Phenomenon: The callback function is invoked when the master sends data for the first time, but it is not invoked during subsequent data transmissions.

How to fix this issue? Ensure the callback function is triggered on every external SPI data transmission.

 

标记 (1)
0 项奖励
回复
1 解答
462 次查看
PetrS
NXP TechSupport
NXP TechSupport

Hi,

do you call Lpspi_Ip_AsyncTransmit again after callback is invoked, to prepare slave for next transfer? This must be called before master sends new frame.

BR, Petr

在原帖中查看解决方案

0 项奖励
回复
2 回复数
463 次查看
PetrS
NXP TechSupport
NXP TechSupport

Hi,

do you call Lpspi_Ip_AsyncTransmit again after callback is invoked, to prepare slave for next transfer? This must be called before master sends new frame.

BR, Petr

0 项奖励
回复
258 次查看
chris_010
Contributor II
thanks a lot.It work well now.
0 项奖励
回复
%3CLINGO-SUB%20id%3D%22lingo-sub-2288765%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ESPI%20%E5%9B%9E%E8%B0%83%E4%BA%8B%E4%BB%B6%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2288765%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E5%97%A8%EF%BC%8C%E5%9C%A8%E4%BD%BF%E7%94%A8%20spi%20%E5%9B%9E%E8%B0%83%E5%87%BD%E6%95%B0%E6%97%B6%EF%BC%8C%E6%88%91%E9%81%87%E5%88%B0%E4%BA%86%E4%B8%80%E4%B8%AA%E9%BA%BB%E7%83%A6%EF%BC%8C%E9%9C%80%E8%A6%81%E4%B8%80%E4%BA%9B%E5%B8%AE%E5%8A%A9%E3%80%82%3C%2FP%3E%3CP%3E%E6%88%91%E7%9A%84%E4%BB%A3%E7%A0%81%E6%8F%8F%E8%BF%B0%EF%BC%9A%E6%88%91%E4%BD%BF%E7%94%A8%20LPSI0%20%E4%BD%9C%E4%B8%BA%E4%BB%8E%E6%9C%BA%E4%B8%8E%E5%A4%96%E9%83%A8%E8%AE%BE%E5%A4%87%E9%80%9A%E4%BF%A1%EF%BC%8C%E4%BD%BF%E7%94%A8%E4%B8%AD%E6%96%AD%E6%A8%A1%E5%BC%8F%E3%80%82%E8%BF%99%E6%98%AF%E6%88%91%E7%9A%84%E4%BB%A3%E7%A0%81%EF%BC%9A%3C%2FP%3E%3CP%3E%E5%AE%9A%E4%B9%89%E7%9A%84%E5%9B%9E%E8%B0%83%E5%87%BD%E6%95%B0%EF%BC%9A%3C%2FP%3E%3CDIV%3Evoid%20lpspi_callback_int(uint8%20Instance%2C%20Lpspi_Ip_EventType%20Event)%3C%2FDIV%3E%3CDIV%3E%7B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EEvent_global%20%3D%20Event%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Eif(Event%20%3D%3DLPSPI_IP_EVENT_END_TRANSFER)%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%2F%2F%20Cache_Ip_InvalidateByAddr(CACHE_IP_CORE%2CCACHE_IP_DATA%2C%20(uint32)%26amp%3BrxBuffer%5B0U%5D%2C%208)%EF%BC%9B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F%2F%20%E4%BB%8E%20rxBuffer%20%E4%B8%AD%E8%AF%BB%E5%8F%96%E6%95%B0%E6%8D%AE%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Et%2B%2B%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E__asm%20volatile%20(%22nop%22)%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Eelse%20if%20(Event%20%3D%3DLPSPI_IP_EVENT_FAULT)%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E__asm%20volatile%20(%22nop%22)%EF%BC%9B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%7D%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%E5%BC%80%E5%A7%8B%E6%8E%A5%E6%94%B6%E6%95%B0%E6%8D%AE%EF%BC%9A%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3Elpspi_status%20%3D%20Lpspi_Ip_AsyncTransmit(%26amp%3BSLAVE_EXTERNAL_DEVICE_1%EF%BC%8CTxSlaveBuffer%EF%BC%8CRxSlaveBuffer%EF%BC%8CNUMBER_OF_BYTES%EF%BC%8Clpspi_callback_int)%EF%BC%9B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CP%3E%E7%8E%B0%E8%B1%A1%EF%BC%9A%E4%B8%BB%E7%AB%99%E9%A6%96%E6%AC%A1%E5%8F%91%E9%80%81%E6%95%B0%E6%8D%AE%E6%97%B6%E8%B0%83%E7%94%A8%E5%9B%9E%E8%B0%83%E5%87%BD%E6%95%B0%EF%BC%8C%E4%BD%86%E5%9C%A8%E9%9A%8F%E5%90%8E%E7%9A%84%E6%95%B0%E6%8D%AE%E4%BC%A0%E8%BE%93%E8%BF%87%E7%A8%8B%E4%B8%AD%E4%B8%8D%E5%86%8D%E8%B0%83%E7%94%A8%E3%80%82%3C%2FP%3E%3CP%3E%E5%A6%82%E4%BD%95%E8%A7%A3%E5%86%B3%E8%BF%99%E4%B8%AA%E9%97%AE%E9%A2%98%EF%BC%9F%E7%A1%AE%E4%BF%9D%E5%9C%A8%E6%AF%8F%E6%AC%A1%E5%A4%96%E9%83%A8%20SPI%20%E6%95%B0%E6%8D%AE%E4%BC%A0%E8%BE%93%E6%97%B6%E8%A7%A6%E5%8F%91%E5%9B%9E%E8%B0%83%E5%87%BD%E6%95%B0%E3%80%82%3C%2FP%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2289299%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20SPI%20callback%20event%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2289299%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E6%82%A8%E5%A5%BD%EF%BC%8C%3C%2FP%3E%0A%3CP%3E%E6%82%A8%E6%98%AF%E5%90%A6%3CSPAN%3E%E5%9C%A8%E8%B0%83%E7%94%A8%E5%9B%9E%E8%B0%83%E5%90%8E%E5%86%8D%E6%AC%A1%3C%2FSPAN%3E%E8%B0%83%E7%94%A8Lpspi_Ip_AsyncTransmit%EF%BC%8C%E4%BB%A5%E4%BE%BF%E4%B8%BA%E4%BB%8E%E5%B1%9E%E8%AE%BE%E5%A4%87%E7%9A%84%E4%B8%8B%E4%B8%80%E6%AC%A1%E4%BC%A0%E8%BE%93%E5%81%9A%E5%A5%BD%E5%87%86%E5%A4%87%EF%BC%9F%E5%BF%85%E9%A1%BB%E5%9C%A8%E4%B8%BB%E7%AB%99%E5%8F%91%E9%80%81%E6%96%B0%E5%B8%A7%E4%B9%8B%E5%89%8D%E8%B0%83%E7%94%A8%E3%80%82%3C%2FP%3E%0A%3CP%3E%3CSPAN%3EBR%2C%20Petr%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E