Передача сообщений по 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 */