Browse Source

解决一开CAN就卡死问题,根因是发送长度左移了16位,导致数组越界;并修改CAN波特率为500k

master
Lizongdi 4 days ago
parent
commit
8f4c0881d6
  1. 14
      32g431.ioc
  2. 1
      CMakePresets.json
  3. 6
      Core/Src/fdcan.c
  4. 2
      robot

14
32g431.ioc

@ -21,10 +21,16 @@ Dma.USART1_TX.0.SyncEnable=DISABLE
Dma.USART1_TX.0.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT Dma.USART1_TX.0.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT
Dma.USART1_TX.0.SyncRequestNumber=1 Dma.USART1_TX.0.SyncRequestNumber=1
Dma.USART1_TX.0.SyncSignalID=NONE Dma.USART1_TX.0.SyncSignalID=NONE
FDCAN1.CalculateBaudRateNominal=2083333 FDCAN1.CalculateBaudRateNominal=500000
FDCAN1.CalculateTimeBitNominal=480 FDCAN1.CalculateTimeBitNominal=2000
FDCAN1.CalculateTimeQuantumNominal=160.0 FDCAN1.CalculateTimeQuantumNominal=100.0
FDCAN1.IPParameters=CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal FDCAN1.DataTimeSeg1=1
FDCAN1.DataTimeSeg2=1
FDCAN1.IPParameters=CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal,Mode,NominalPrescaler,NominalTimeSeg1,NominalTimeSeg2,DataTimeSeg1,DataTimeSeg2
FDCAN1.Mode=FDCAN_MODE_NORMAL
FDCAN1.NominalPrescaler=10
FDCAN1.NominalTimeSeg1=15
FDCAN1.NominalTimeSeg2=4
File.Version=6 File.Version=6
GPIO.groupedBy=Group By Peripherals GPIO.groupedBy=Group By Peripherals
KeepUserPlacement=false KeepUserPlacement=false

1
CMakePresets.json

@ -31,6 +31,7 @@
"BUILD_BSPMCU": "ON", "BUILD_BSPMCU": "ON",
"BUILD_SPOOLEND": "ON", "BUILD_SPOOLEND": "ON",
"MEM_POOL_TOTAL_SIZE": "8*1024", "MEM_POOL_TOTAL_SIZE": "8*1024",
"CONFIG_CAN_NEW_VERSION": "1",
"USE_UART": true, "USE_UART": true,
"USE_PRINT": true, "USE_PRINT": true,
"PRINT_ID": "1", "PRINT_ID": "1",

6
Core/Src/fdcan.c

@ -44,10 +44,10 @@ void MX_FDCAN1_Init(void)
hfdcan1.Init.AutoRetransmission = DISABLE; hfdcan1.Init.AutoRetransmission = DISABLE;
hfdcan1.Init.TransmitPause = DISABLE; hfdcan1.Init.TransmitPause = DISABLE;
hfdcan1.Init.ProtocolException = DISABLE; hfdcan1.Init.ProtocolException = DISABLE;
hfdcan1.Init.NominalPrescaler = 16; hfdcan1.Init.NominalPrescaler = 10;
hfdcan1.Init.NominalSyncJumpWidth = 1; hfdcan1.Init.NominalSyncJumpWidth = 1;
hfdcan1.Init.NominalTimeSeg1 = 1; hfdcan1.Init.NominalTimeSeg1 = 15;
hfdcan1.Init.NominalTimeSeg2 = 1; hfdcan1.Init.NominalTimeSeg2 = 4;
hfdcan1.Init.DataPrescaler = 1; hfdcan1.Init.DataPrescaler = 1;
hfdcan1.Init.DataSyncJumpWidth = 1; hfdcan1.Init.DataSyncJumpWidth = 1;
hfdcan1.Init.DataTimeSeg1 = 1; hfdcan1.Init.DataTimeSeg1 = 1;

2
robot

@ -1 +1 @@
Subproject commit 25ecd887967077edda62cdbf46c9b63eff5cf17a Subproject commit cb9e2962ff29da185602fa9baaaaae02bffc17d9
Loading…
Cancel
Save