2394435_ja-JP

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

2394435_ja-JP

2394435_ja-JP

SPI用のDMAを設定する必要があります

私はS32DS IDEとRTD 3.0を使っています。SPIでDMAを起動する方法や、ステップバイステップの手順や、もしあれば他の例コードがあれば教えてもらえますか?

Re: I need to configure DMA for SPI

ご回答ありがとうございます。

この作業はs32k322 MCUで行ってください

Re: I need to configure DMA for SPI

こんにちは@ershi

RTDにはDMAを用いたSPI通信用の2つの例コードが付属しており、1つは低レベルドライバ(Ip)を用い、もう1つは高レベルドライバ(MCAL)を使用します。例のインポート方法については、HOWTO: S32 Design Studio - Create a New S32DS Project from Example Threadを参照してください。

また、スレッドの 例であるS32K31 SPI Multiple Packet Transmit and Receive: Solution for DMA Cache Issueの例を参照することもできます。


BR、VaneB

Re: I need to configure DMA for SPI

こんにちは@ershi

これらの例はS32K322向けに特別に設計されているわけではありませんが、リファレンス・マニュアルに特に記載されていない限り、S32K3 ファミリ全体で機能性は概ね同じです。したがって、このプロジェクトを実装の参考として活用し、必要に応じてデバイスに合わせて調整することができます。

Re: I need to configure DMA for SPI

すべて設定しましたが、最初は動作せず、(Lpspi_Ip_AsyncTransmit)でLPSPI_IP_STATUS_SUCCESSとして返され、2回目は失敗と表示されますLPSPI_IP_STATUS_FAIL、DMAなしでこのAPIを使ってデータをSPI経由で送信できますLpspi_Ip_SyncTransmit()いくつかの設定スクリーンショットを添付しました。

Re: I need to configure DMA for SPI

こんにちは@ershi

RMやIntCtrl_Ipドライバーの設定画像も共有してもらえますか?
Re: I need to configure DMA for SPI

こんにちは、 @VaneBさん

RMとIntCtrl_IPドライバの設定のスクリーンショットと、詳細な参考のために短い動画クリップを添付しました。

LPSPIの設定ページで1つの違いに気づきました。SPI GeneralタブのSpi_Phy_TxDmaChannelの項目で、TX設定とRX設定で名前が異なっています。

追加情報が必要な場合はお知らせください。

InterruptsInterruptsInterruptsInterruptsInterruptsInterruptsInterruptsInterrupts割り込みRMRMRMRMRMRMRMRMRM

Lpi.png

Re: I need to configure DMA for SPI

こんにちは@ershi

情報を共有していただきありがとうございます。

一つだけ気づいたことがあります。Dma_Ipドライバー構成では、DMA_SPI_CALLBACK_0を割り込みコールバックとして定義しています。しかし、LPSPI DMAのコールバックはドライバーから既に提供されており、Lpspi_Ip_Irq.cで見つけることができますファイル。

LPSPI2の場合、設定するコールバックは以下のとおりです。

  • TX DMAチャネルのLpspi_Ip_LPSPI_2_IrqTxDmaHandler
  • RX DMAチャネルのLpspi_Ip_LPSPI_2_IrqRxDmaHandler
Re: I need to configure DMA for SPI

こんにちは、 @VaneBさん

ご説明いただきありがとうございます。

Dma_Ip設定を更新し、LPSPI2ではTXとRX DMAチャネルがLpspi_Ip_Irq.cからのコールバックを使うようになりました。

しかしながら、私の環境ではDMAベースのLPSPI転送が期待通りに動作していません。参考までに、現在の設定画面のスクリーンショットを添付しました。他に調整すべき設定があれば教えてください。

Re: I need to configure DMA for SPI

こんにちは@ershi

SPIコミュニケーションをどのように実装しているのか教えていただけますか?また、以前共有したサンプルコードをテストしてみましたか?

Re: I need to configure DMA for SPI

こんにちは、 @VaneBさん

以前の設定を削除し、SPIデータはDMA経由で送信されるようになりましたが、データが一致しないという問題が発生しています。

#define RX_MSG_SIZE (15U)
#define TX_MSG_SIZE (15U)

uint8_t txBuffer_check[TX_MSG_SIZE] = {0x48,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x10,0x11,0x12,0x13,0x14,0x15};

uint8_t rxBuffer_check[]={0};

if(Lpspi_Ip_AsyncTransmit(&Lpspi_Ip_DeviceAttributes_SpiExternalDevice_1_Instance_2_BOARD_InitPeripherals,txBuffer_check,rxBuffer_check,TX_MSG_SIZE,spi_DMA_Function) == LPSPI_IP_STATUS_SUCCESS)

{

Dma_Ip_ReturnType status = {0},status1 = {0};
Dma_Ip_LogicChannelStatusType channelStatus ={0},channelStatus1 ={0};
status = Dma_Ip_GetLogicChannelStatus(DMA_LOGIC_CH_0,&channelStatus);
status1 = Dma_Ip_GetLogicChannelStatus(DMA_LOGIC_CH_1,&channelStatus1);
 
return SYS_SUCCESS;

}


Re: I need to configure DMA for SPI

こんにちは@ershi

LPSPI2のSOUT信号をSINに直接接続していますか、それともロジックアナライザを使用して送受信データを検証していますか?

Re: I need to configure DMA for SPI

こんにちは、 @VaneB さん

コードを書き直したところ、今は完璧に動作しています。データは正しく入力されています。

ご協力ありがとうございました。

标记 (1)
无评分
版本历史
最后更新:
2 周之前
更新人: