NXP MCU 技术论坛
直播中

陆军航空兵

9年用户 895经验值
私信 关注
[问答]

求分享mpc 5777c的LIN示例代码

我正在研究 mpc 5777c 的 LIN 通信。我正在寻找 mpc 5777c 的 LIN 示例代码,但找不到。我可以获得此代码的帮助吗?我想传输和接收多个数据,但它不起作用。这是代码。
#define esci_c
#include "..\typedefs_mpc.h"
#include "..\proto_mpc.h"

void esci_init(void)
{
LIN_EN = 1;
SIU.PCR[LIN_TXD_pin].R = 0x400; // 为主要功能配置焊盘:LIN_TXD
SIU.PCR[LIN_RXD_pin].R = 0x400; // 为主要功能配置焊盘:LIN_RXD

eSCI_B.CR2.R = 0x2000; // 模块已启用(默认设置)
eSCI_B.LCR1.R = 0x0000; // LIN 模块停用

eSCI_B.BRR.B.SBR = 625;

eSCI_B.LCR1.B.LIN = 1; // LIN 模块激活
        eSCI_B.CR2.B.BRCL = 1;
        eSCI_B.CR2.B.BESTP = 1;
        eSCI_B.CR2.B.BSTP = 1;
eSCI_B.CR1.B.TE = 1; // 启用发送
eSCI_B.CR1.B.RE = 1; // 启用 Rx

//发送中断激活
eSCI_B.CR1.B.RIE = 1;
}

uint8_t lin_data = 0x2;
uint8_t receivedID;

//帧传输
void LIN_SendFrame(uint8_t 标头、uint8_t* 数据​​、uint8_t 长度)
{
   //eSCI_B.LRR.R = 标题;

   uint8_tj=0;/* 虚拟变量 */
   对于(j=0;j<长度;j++)
   {
      如果(eSCI_B.IFSR2.B.TXRDY == 1)
      {
         eSCI_B.IFSR2.R = 0x4000;/* 清除 TXRDY 标志 */
         eSCI_B.LTR.R = *(数据+j); /* 发送 8 位数据 */
      }
   }
}

#define MY_ID 0x15
uint8_t test_lin = 0;
// 帧接收
void LIN_ReceiveFrame(uint8_t* 标头,uint8_t* 数据​​,uint8_t 长度)
{

   uint8_tj=0;/* 虚拟变量 */

   如果(eSCI_B.IFSR2.B.RXRDY == 1)
   {
      eSCI_B.IFSR2.B.RXRDY = 0x8000; /* 清除 RXRDY 标志 */
      *header = eSCI_B.LRR.R;
      如果 (*header == MY_ID)
      {
         test_lin = 1;
         对于(j=0;j<长度;j++)
         {
            eSCI_B.IFSR2.B.RXRDY = 0x8000; /* 清除 RXRDY 标志 */
            *(数据 + j) = eSCI_B.LRR.R; /* 读取数据字节*/
         }
      }
   }
}

void LIN_IRQHandler(void) {


    如果 (eSCI_B.IFSR2.B.OVFL)
    {
    eSCI_B.IFSR2.B.OVFL = 0;
    }

    如果 (eSCI_B.IFSR2.B.RXRDY)
    {
        uint8_t receivedID = eSCI_B.LRR.R;

        如果(receivedID == MY_ID)
        {
        uint8_t receivedData = eSCI_B.LRR.R;
        }
        eSCI_B.IFSR2.B.RXRDY = 0;
    }

    如果 (eSCI_B.IFSR2.B.TXRDY)
    {
    eSCI_B.IFSR2.B.TXRDY = 0;
    }
}


   uint8_t txHeader = 0x01;
   uint8_t txData[] = {0x15, 0x22, 0x33,0x44};
   LIN_SendFrame(txHeader, txData, 4);
   LIN_ReceiveFrame(&rxHeader, rxData, 4);




































更多回帖

发帖
×
20
完善资料,
赚取积分