作者:幸运的双鱼
免责声明: 本文为个人学习笔记及总结,仅代表个人观点,尽可能保证内容准确性。复制/转发请注明来源/作者。
-
Mcl介绍
主要是链接DMA硬件通道,像ADC/SPI等需要用到DMA进行数据转化,会节省芯片运行时间。在电机控制中FOC放在ADC中断中,使用DMA可减少中断占用时间,也可以用到SPI读取编码器角度。
-
模块依赖关系
依赖于Mcu模块。
-
配置界面
1.General
2.Mcl Interrupts Available
3.MclConfigset
链接关系参考之前的章节:《EB配置S32K144 MCAL的Adc》硬件触发
本章节示例使用:FTM->PDB->ADC->DMA
4.DMA Logical Channels
-
代码
/* ------------------ MCL -------------------------------*/
Mcl_Init(&MclConfigSet_0);
Mcl_DmaEnableNotification(MCL_DMA_LOGICAL_CHANNEL_0,MCL_DMA_TRANSFER_COMPLETE);
Mcl_DmaEnableNotification(MCL_DMA_LOGICAL_CHANNEL_1,MCL_DMA_TRANSFER_COMPLETE);
INT_SYS_InstallHandler(DMA0_IRQn,MCL_DMA_CH_0_ISR,NULL_PTR);
INT_SYS_SetPriority(DMA0_IRQn,0);
INT_SYS_EnableIRQ(DMA0_IRQn);
INT_SYS_InstallHandler(DMA1_IRQn,MCL_DMA_CH_1_ISR,NULL_PTR);
INT_SYS_SetPriority(DMA1_IRQn,0);
INT_SYS_EnableIRQ(DMA1_IRQn);
void DMA0_Notification(void)
{
KL15 = ADC0_Result[0]*5000/4095*11;
Adc_Adc12bsarv2_DmaTransferComplete0();
}
中断函数中一定要放此函数Adc_Adc12bsarv2_DmaTransferComplete0();,不然DMA只会进一次中断!!!本人在此处踩过坑。