Передача сообщений по CAN микроконтроллера STM32F10x
Передачу сообщения по CAN можно выполнить с помощью функции стандартной библиотеки (stm32f10x_can.h):
uint8_t CAN_Transmit (CAN_TypeDef* CANx, CanTxMsg* TxMessage);
CanTxMsg - структура с характеристиками и данными передаваемого сообщения:
//- stm32f10x_can.h
typedef struct
{
uint32_t StdId; /* Стандартный идентификатор от 0 до 0x7FF. */
uint32_t ExtId; /* Расширенный идентификатор от 0 до 0x1FFFFFFF. */
uint8_t IDE; /* Тип ID: стандартный или расширенный */
uint8_t RTR; /* Тип сообщения: данные или запрос на передачу */
uint8_t DLC; /* Длина передаваемого сообщения: от 0 до 8 байтов */
uint8_t Data[8]; /* Массив с передаваемыми данными */
} CanTxMsg;
IDE - Тип идентификатора передаваемого сообщения (11- или 29-бит):
#define CAN_Id_Standard ((uint32_t)0x00000000) /* Standard Id */
#define CAN_Id_Extended ((uint32_t)0x00000004) /* Extended Id */
RTR - Тип сообщения (данные или запрос на передачу):
#define CAN_RTR_Data ((uint32_t)0x00000000) /* Data frame */
#define CAN_RTR_Remote ((uint32_t)0x00000002) /* Remote frame */