cancel
Showing results for 
Search instead for 
Did you mean: 

What version will this error for seg1, seg2 of CANFD setting problem in STM32CUBEIDE.fixed in?

LSung.1
Associate III

Hello?

I am developing CAN communication with H7 series products, but I am experiencing inconvenience due to errors in STM32CUBE.

In this program, the minimum value of Normal Time Seg1 and Seg2 is forced to 2.(Ver 1.14.0) However, it is confirmed that it can operate at 1 or higher in the header file inside the firmware. 

 

In stm3232h7xx_hal_fdcan.h,

--------------------------------------------

#define IS_FDCAN_NOMINAL_PRESCALER(PRESCALER) (((PRESCALER) >= 1U) && ((PRESCALER) <= 512U))
#define IS_FDCAN_NOMINAL_SJW(SJW) (((SJW) >= 1U) && ((SJW) <= 128U))
#define IS_FDCAN_NOMINAL_TSEG1(TSEG1) (((TSEG1) >= 1U) && ((TSEG1) <= 256U))
#define IS_FDCAN_NOMINAL_TSEG2(TSEG2) (((TSEG2) >= 1U) && ((TSEG2) <= 128U))
#define IS_FDCAN_DATA_PRESCALER(PRESCALER) (((PRESCALER) >= 1U) && ((PRESCALER) <= 32U))
#define IS_FDCAN_DATA_SJW(SJW) (((SJW) >= 1U) && ((SJW) <= 16U))
#define IS_FDCAN_DATA_TSEG1(TSEG1) (((TSEG1) >= 1U) && ((TSEG1) <= 32U))
#define IS_FDCAN_DATA_TSEG2(TSEG2) (((TSEG2) >= 1U) && ((TSEG2) <= 16U))
#define IS_FDCAN_MAX_VALUE(VALUE, MAX) ((VALUE) <= (MAX))
#define IS_FDCAN_MIN_VALUE(VALUE, MIN) ((VALUE) >= (MIN))

--------------------------------------------

 

I think it's a program error, but it's too much of a problem due to the limitations of communication speed settings, so I'd like to know when it will be fixed.

For example, to set the sampling point to 87.5%, the maximum speed can be achieved when seg1=6 and seg2=1, so setting it to 1 is essential.

 

-------------------------------------------------------------------

Additional question. This is separate from the above, but when using synchronous mode in USART, isn't the Baud 16 times higher than asynchronous mode? In STM32CUBEIDE, the Baud limit for synchronous mode and asynchronous mode is the same at USART_CLOCK/16, so I would like to inquire further.

Someone said that in the case of I2C, which is limited to 1 MHz, there is a way to implement up to 3.4 MHz by overclocking, but I2C has a speed limit specified in the manual, so even if the speed is insufficient, it is used at 1 MHz or less. In the case of UART, there is no separate specification, so I think the sampling clock should be able to be used as is when changing from asynchronous to synchronous method.

--------------------------------------------------------------------

 

Please reply.

0 REPLIES 0