can-fd-configuration-8.ino

HPMicro HPM5100: Microcontrolador RISC-V de 400 MHz con analógica integrada · Archivo : can-fd-configuration-8.ino · Lenguaje : C · Uso : Configurer le contrôleur CAN FD pour envoyer et recevoir des trames de données avec un débit élevé.

Inicializa el bus CAN FD a velocidades diferenciadas (arbitraje y datos) y envía una trama estándar.

Requiere SDK HPMicro. CAN FD permite hasta 8 Mbps en la fase de datos. Asegúrese de tener una terminación de bus de 120 ohmios y un transceptor CAN externo conectado al HPM5100.

can-fd-configuration-8.ino

#include "board.h"
#include "hpm_canfd_drv.h"
#include "hpm_clock_drv.h"

#define CANFD_SAMPLE_POINT  80
#define CANFD_TSEG1         12
#define CANFD_TSEG2         3

canfd_buf_config_t tx_buf_cfg;
canfd_message_t rx_msg, tx_msg;

void canfd_setup(void)
{
    canfd_config_t canfd_config;
    
    clock_add_to_group(clock_can0, 0);
    
    /* Configuration CAN FD : 500 kbps Arbitration, 2 Mbps Data */
    canfd_config.sample_point = CANFD_SAMPLE_POINT;
    canfd_config.tseg1 = CANFD_TSEG1;
    canfd_config.tseg2 = CANFD_TSEG2;
    canfd_config.sample_point_data = CANFD_SAMPLE_POINT;
    canfd_config.tseg1_data = CANFD_TSEG1;
    canfd_config.tseg2_data = CANFD_TSEG2;
    canfd_config.mode = canfd_mode_normal;
    canfd_init(CAN0, &canfd_config);
    
    /* Configuration buffer TX */
    tx_buf_cfg.data_size = 64; /* Max Data Size CAN FD */
    canfd_setup_tx_buffer(CAN0, 0, &tx_buf_cfg);
}

void canfd_send_test(void)
{
    tx_msg.id = 0x123;
    tx_msg.is_fd = true;
    tx_msg.data_len = 8;
    tx_msg.data[0] = 0xDE;
    tx_msg.data[1] = 0xAD;
    /* ... remplir les autres octets ... */
    canfd_send_message(CAN0, 0, &tx_msg);
}

int main(void)
{
    board_init();
    canfd_setup();
    
    while (1) {
        canfd_send_test();
        delay_ms(100);
    }
}

← Volver a la ficha