STM32f2 & can (maska)

Jan Waclawek konfera na efton.sk
Pondělí Leden 11 16:00:48 CET 2016


Bez toho aby som co len tusil co je maska v CAN, a s tym ze CubeMX sa
nemienim dotknut ani palicou a Cube mi je z hlbky duse odporny, jeden
rychly kuk do
[STM32Cube_FW_F4_V1.4.0]\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_can.h
:

typedef struct
{
[...]

  uint32_t FilterMode;            /*!< Specifies the filter mode to be
initialized.
                                       This parameter can be a value of
@ref CAN_filter_mode */
[...]
}CAN_FilterConfTypeDef;


No a F2 sa od F4 v periferiach nelisi, ci?

wek


----- Original Message ---------------
>Ahoj,
>   mám vygenerovaný projekt z CUBE a rozběhaný CAN. Problém je, µe pokud se mu cokoliv jiného neµ nulu pokusím dát do 
>nastavení masky, tak mi to nepřijme CAN paket. Neví někdo, jestli je to vlastnost nebo něco dělám chybně?
>
>Obe±el jsem to tak, µe kontroluji CAN ID při příjmu, v tomto projektu to nevadí. Ale tak nějak je mi to přijde ... nepěkné 
>:-).
>
>
>
>#define CAN_ID_BASE         ((uint32_t)0x0AAA0100u)
>#define CAN_RX_MASK         ((uint32_t)0x1FFFFFC0u)
>#define CAN_ID_MASTER_BIT   ((uint32_t)0x00001000u)
>
>
>void
>cancomInit(uint8_t CardId)
>{
>   cancomCardId_u8 = CardId;
>
>   /* can filter configuration */
>   cancomTx_s.StdId = 0u;
>   cancomTx_s.ExtId = CAN_ID_BASE | CAN_ID_MASTER_BIT | cancomCardId_u8;
>   cancomTx_s.IDE   = CAN_ID_EXT;
>   cancomTx_s.RTR   = CAN_RTR_DATA;
>   cancomTx_s.DLC   = 8u;
>
>   hcan1.pTxMsg = &cancomTx_s;
>   hcan1.pRxMsg = &cancomRx_s;
>   /* CAN RX filter - bank 0 */
>   CAN_FilterConfTypeDef sFilterConfig =
>   {
>     .FilterScale = CAN_FILTERSCALE_32BIT,
>     .FilterActivation = ENABLE,
>     .BankNumber = 0u,   // always 0 - no can2 (slave (dual can)
>     .FilterNumber = 0u,
>     .FilterFIFOAssignment = 0u,
>     .FilterIdHigh = ((CAN_ID_BASE | CAN_ID_MASTER_BIT) >> 16),
>     .FilterIdLow  = ((CAN_ID_BASE | CAN_ID_MASTER_BIT) & 0xFFFFu),
>     .FilterMaskIdHigh = 0u,
>     .FilterMaskIdLow = 0u,
>     // Mask not works ??
>     //.FilterMaskIdHigh = (CAN_RX_MASK >> 16),
>     //.FilterMaskIdLow = (CAN_RX_MASK & 0xFFFFu),
>   };
>   HAL_CAN_ConfigFilter(&hcan1, &sFilterConfig);
>}
>



Daląí informace o konferenci Hw-list