This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F2800157:i'm 寻求有关如何使用 LIN 执行 SCI 接收中断的建议。

Guru**** 2526700 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1565462/tms320f2800157-i-m-looking-for-advice-on-how-to-do-sci-receive-interrupt-using-lin

器件型号:TMS320F2800157


工具/软件:


void linaInit (void)

LIN_BAUD_CALC (19200、&P_VALUE、&M_VALUE、&U_VALUE);

EALLOW;
CpuSysRegs.PCLKCR19.bit.LIN_A = 1;
LinaRegs.SCIGCR0.bit.reset = 1;// h/w 复位
// LinaRegs.SCIGCR0.bit.reset = 0;
LinaRegs.SCIGCR1.bit.SWnRST = 0;// SCI 설정 전 리셋 상태 진입 μ s
// SCI 모드 설정
LinaRegs.SCIGCR1.bit.LINMODE = 0;// 0:SCI 模式启用、1:LIN 模式启用
// 1h (R/W)= SCI 兼容模式:使能 SCI 模块的时钟。
LinaRegs.SCIGCR1.bit.CLK_Master = 1;
LinaRegs.SCIGCR1.bit.TIMINGMODE = 1;//타이밍 모드 μ s
//통신 모드 설정
LinaRegs.SCIGCR1.bit.COMMMODE = 0;// Idle-line 모드
LinaRegs.SCIGCR1.bit.PARITYENA = 1;//패리티 사용 μ s
LinaRegs.SCIGCR1.bit.barity = 0;//偶校验
LinaRegs.SCIGCR1.bit.stop = 0;// 1 个停止位
LinaRegs.SCIGCR1.bit.TXENA = 1;//송신 활성화 μ s
LinaRegs.SCIGCR1.bit.RXENA = 1;//수신 활성화 μ s
LinaRegs.SCIGCR1.bit.cont = 1;//디버깅 중에도 동작 μ s
//문자 길이 설정(8 位)
LinaRegs.SCIFORMAT.bit.char = 7;// 8 位 (0부터 시작 μ s)
LinaRegs.SCIFORMAT.bit.length = 1;// 1 个字符
설정 波特率 24비트 분주기(μ s)
LinaRegs.brSR.bit.SCI_LIN_PSL = P_Value 和 0xFFFF;
LinaRegs.brSR.bit.SCI_LIN_PSh =(P_VALUE >> 16) 和 0xFF;
LinaRegs.brSR.bit.M = M_value;//소수 분주기 미사용 μ s
LinaRegs.brSR.bit.U = U_value;//초소수 분주기 미사용 μ s

LinaRegs.SCIPIO0.bit.RXFUNC = 1;// LINRX 기능 SCI RX→
LinaRegs.SCIPIO0.bit.TXFUNC = 1;// LINTX→SCI TX 기능 μ s

LinaRegs.SCISETINT.bit.SETRXINT = 1;RX 인터럽트 활성화
// 0h (R/W)=인터럽트 레벨이 INT0 라인에 매핑됩니다。
LinaRegs.SCISETINTLVL.bit.SETRXINTOVO = 0;RX 인터럽트 우선순위 0

인터럽트 벡터 등록 μ s
PieVectTable.Lina_0_INT =&LINRxIsr;PIE 그룹 6、INTx5
PieCtrlRegs.PIEIER6.bit.INTx5 = 1;인터럽트 활성화 μ s
IER |= M_INT6;

LinaRegs.SCIGCR0.bit.reset = 1;
LinaRegs.SCIGCR1.bit.SWnRST = 1;SCI 설정 전 리셋 상태 진입

GpioCtrlRegs.GPAGMUX2.bit.GPIO22 = 2;LIN_TX 작업에 대한 GPIO 구성“9、b1001“
GpioCtrlRegs.GPAMUX2.bit.GPIO22 = 1;
GpioCtrlRegs.GPAGMUX2.bit.GPIO23 = 2;LIN_RX 작업을 위해 GPIO 구성“9、b1001“
GpioCtrlRegs.GPAMUX2.bit.GPIO23 = 1;//

GpioCtrlRegs.GPADIR.bit.GPIO23 = 0;RX 입력
GpioCtrlRegs.GPADIR.bit.GPIO22 = 1;TX 출력
EDIS;

}


__interrupt 무효
LINRxIsr (void)

linRxCnt++;
if (aiTpTest===Lina) DO1_T;

linRxData = LinaRegs.SCIRD.bit.RD;수신 데이터 읽기 μ s

如果 (LinaRegs.SCIFLR.bit.OE) LinaRegs.SCICLEARINT.bit.CLROEINT = 1;
如果 (LinaRegs.SCIFLR.bit.FE) LinaRegs.SCICLEARINT.bit.CLRFEINT = 1;(LinaRegs.SCIFLR.bit.PE) LinaRegs.SCICLEARINT.bit.CLRPEINT = 1인 μ s
경우;


LinaRegs.SCICLEARINT.bit.CLRRXINT = 1;//인터럽트 플래그 클리어 μ s

PIE 인터럽트 确认
PieCtrlRegs.PIEACK.ALL = PIEACK_group6;

}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    您能否提供 更多 信息、说明您是如何尝试设置 SCI 的、以及您在设置 SCI 时遇到了什么问题?

    此外、我建议使用 driverlib、其中包含针对不同用例提供的多个示例。

    此致、

    Arnav