CAN_CFG.c 4.64 KB
Newer Older
时昊's avatar
时昊 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193
/*
 * @Filename:
 * @Descripttionn:
 * @version:
 * @Author: TianYu
 * @Date: 2023-05-08 10:46:43
 * @LastEditTime: 2023-05-08 11:12:13
 */

#include "CAN_CFG.h"
//#include "NM_protocol.h"
#include "RSCAN.h"
#include "RTE_CAN.h"
#include "NMUserControl.h"
#include "PowerManag_User.h"

uint8_t GetBusOffState(void)
{
    uint8_t rscan_st = RSCAN0_CH0_Get_Busoff_Status( );
    return rscan_st;
}

void AbortAllCanTx(void)
{

    RSCAN0_CH0_Abort(RSCAN_CHANNEL_BUF_0);
    RSCAN0_CH0_Abort(RSCAN_CHANNEL_BUF_1);
    RSCAN0_CH0_Abort(RSCAN_CHANNEL_BUF_2);
    RSCAN0_CH0_Abort(RSCAN_CHANNEL_BUF_3);
    RSCAN0_CH0_Abort(RSCAN_CHANNEL_BUF_4);
    RSCAN0_CH0_Abort(RSCAN_CHANNEL_BUF_5);
    RSCAN0_CH0_Abort(RSCAN_CHANNEL_BUF_6);
    RSCAN0_CH0_Abort(RSCAN_CHANNEL_BUF_7);
    RSCAN0_CH0_Abort(RSCAN_CHANNEL_BUF_8);
    RSCAN0_CH0_Abort(RSCAN_CHANNEL_BUF_9);
    RSCAN0_CH0_Abort(RSCAN_CHANNEL_BUF_10);
    RSCAN0_CH0_Abort(RSCAN_CHANNEL_BUF_11);
    RSCAN0_CH0_Abort(RSCAN_CHANNEL_BUF_12);
    RSCAN0_CH0_Abort(RSCAN_CHANNEL_BUF_13);
}

void CanBusoffRecover(void)
{

    RSCAN0_CH0_Busoff_Recover( );
}
uint8_t CAN_NM_TX_STATUS;
uint8_t CAN_APP_TX_STATUS;
uint8_t CAN_NM_REC_STATUS;
void    NM_CanInit(void)
{
    // MSCAN_30_Init();
    CAN_NM_TX_STATUS  = 0u;
    CAN_APP_TX_STATUS = 0u;
    CAN_NM_REC_STATUS = 0U;
    Can_Init( );
}

void CAN_SET_APP_SEND(uint8_t status)
{
    CAN_APP_TX_STATUS = status;
}
void CAN_SET_NM_SEND(uint8_t status)
{
    CAN_NM_TX_STATUS = status;
}
void CAN_SET_NM_REC(uint8_t status)
{
    CAN_NM_REC_STATUS = status;
}

uint8_t CAN_GET_NM_REC(void)
{
    return CAN_NM_REC_STATUS;
}
uint8_t CAN_GET_APP_SEND(void)
{
    return CAN_APP_TX_STATUS;
}
uint8_t CAN_GET_NM_SEND(void)
{
    return CAN_NM_TX_STATUS;
}
void CanRequestSleep(void)
{
    u32OsekAPPFlag = 0UL;
    // 不要打开
    //	RSCAN0_Sleep_Init();
}

void SetCanSTBLevel(uint8_t n)
{
    // 不要打开
    //  if ( n == NM_LOW )
    //  {
    //      ;
    //  }
    //  else if ( n == NM_HIGH )
    //  {
    //      ;
    //  }
}

void CanTxMsg(uint8_t SendCh, uint8_t *data, uint8_t len, uint32_t id)
{
    uint32_t       i;
    CAN_Frame_st_t m_msg;

    if ( SYS_OPR_STAT_HALT )
    {
        return;
    }
    NmSetLastId(id);

    m_msg.u32CANID      = id;
    m_msg.u8CANLEN      = len;
    m_msg.u8CANFrameIDE = 1;
    for ( i = 0; i < m_msg.u8CANLEN; i++ )
    {
        m_msg.unCANData.u8CANData [ i ] = data [ i ];
    }

    switch ( id )
    {
        case 0x18FFA017:
            if ( CAN_NM_TX_STATUS == 0u )
            {
                RSCAN0_CH0_Set_TXBUF_Data(RSCAN_CHANNEL_BUF_2, &m_msg);
            }
            break;
        case 0x10FF4117:
            if ( CAN_APP_TX_STATUS == 0u )
            {
                RSCAN0_CH0_Set_TXBUF_Data(RSCAN_CHANNEL_BUF_3, &m_msg);
            }
            break;
        case 0x0A18A000:
            if ( CAN_APP_TX_STATUS == 0u )
            {
                RSCAN0_CH0_Set_TXBUF_Data(RSCAN_CHANNEL_BUF_4, &m_msg);
            }
            break;

        case 0x0810A000:
            if ( CAN_APP_TX_STATUS == 0u )
            {
                RSCAN0_CH0_Set_TXBUF_Data(RSCAN_CHANNEL_BUF_5, &m_msg);
            }
            break;
        case 0x18FFC321:
            if ( CAN_APP_TX_STATUS == 0u )
            {
                RSCAN0_CH0_Set_TXBUF_Data(RSCAN_CHANNEL_BUF_6, &m_msg);
            }
            break;
        case 0x18FEFC17:
            if ( CAN_APP_TX_STATUS == 0u )
            {
                RSCAN0_CH0_Set_TXBUF_Data(RSCAN_CHANNEL_BUF_7, &m_msg);
            }
            break;
        case 0x18D00017:
            if ( CAN_APP_TX_STATUS == 0u )
            {
                RSCAN0_CH0_Set_TXBUF_Data(RSCAN_CHANNEL_BUF_8, &m_msg);
            }
            break;

        case 0x0CFE6CEE:
            if ( CAN_APP_TX_STATUS == 0u )
            {
                RSCAN0_CH0_Set_TXBUF_Data(RSCAN_CHANNEL_BUF_9, &m_msg);
            }
            break;
        case 0x18FF6121:
            if ( CAN_APP_TX_STATUS == 0u )
            {
                RSCAN0_CH0_Set_TXBUF_Data(RSCAN_CHANNEL_BUF_10, &m_msg);
            }
            break;
        case 0x18FEC1EE:
            if ( CAN_APP_TX_STATUS == 0u )
            {
                RSCAN0_CH0_Set_TXBUF_Data(RSCAN_CHANNEL_BUF_11, &m_msg);
            }
            break;

        case 0x18FEE6EE:
            if ( CAN_APP_TX_STATUS == 0u )
            {
                RSCAN0_CH0_Set_TXBUF_Data(RSCAN_CHANNEL_BUF_12, &m_msg);
            }
            break;
194 195 196 197 198 199
        case 0x18A97121:
            if ( CAN_APP_TX_STATUS == 0u )
            {
                RSCAN0_CH0_Set_TXBUF_Data(RSCAN_CHANNEL_BUF_13, &m_msg);
            }
            break;
时昊's avatar
时昊 committed
200 201 202 203 204

        default:
            break;
    }
}