working transmit data

This commit is contained in:
2025-06-25 12:33:26 -07:00
parent 886ecf1778
commit 7235900cac
6 changed files with 83 additions and 66 deletions

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>CAN-B</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
</buildSpec>
<natures>
</natures>
</projectDescription>

View File

@@ -15,6 +15,7 @@
"/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/STM32F1xx_HAL_Driver/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/STM32F1xx_HAL_Driver/Inc",
"/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/STM32F1xx_HAL_Driver/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/STM32F1xx_HAL_Driver/Src",
"/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/CMSIS/DSP/Include", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/CMSIS/DSP/Include",
"/home/kymkim/Projects/modular-kbd/firmware/components/CAN/CAN-B/.pio/libdeps/bluepill_f103c8/Unity/src",
"/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/Common", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/Common",
"/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/ak4343", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/ak4343",
"/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/cs43l22", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/cs43l22",
@@ -68,6 +69,7 @@
"/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/STM32F1xx_HAL_Driver/Inc", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/STM32F1xx_HAL_Driver/Inc",
"/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/STM32F1xx_HAL_Driver/Src", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/STM32F1xx_HAL_Driver/Src",
"/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/CMSIS/DSP/Include", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/CMSIS/DSP/Include",
"/home/kymkim/Projects/modular-kbd/firmware/components/CAN/CAN-B/.pio/libdeps/bluepill_f103c8/Unity/src",
"/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/Common", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/Common",
"/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/ak4343", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/ak4343",
"/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/cs43l22", "/home/kymkim/.platformio/packages/framework-stm32cubef1/Drivers/BSP/Components/cs43l22",

View File

@@ -2,11 +2,13 @@
CAD.formats= CAD.formats=
CAD.pinconfig= CAD.pinconfig=
CAD.provider= CAD.provider=
CAN.CalculateBaudRate=800000 CAN.BS1=CAN_BS1_13TQ
CAN.CalculateTimeBit=1250 CAN.BS2=CAN_BS2_2TQ
CAN.CalculateTimeQuantum=416.6666666666667 CAN.CalculateBaudRate=125000
CAN.IPParameters=CalculateTimeQuantum,CalculateTimeBit,CalculateBaudRate,Prescaler,SJW CAN.CalculateTimeBit=8000
CAN.Prescaler=15 CAN.CalculateTimeQuantum=500.0
CAN.IPParameters=CalculateTimeQuantum,CalculateTimeBit,CalculateBaudRate,Prescaler,SJW,BS1,BS2
CAN.Prescaler=18
CAN.SJW=CAN_SJW_1TQ CAN.SJW=CAN_SJW_1TQ
File.Version=6 File.Version=6
GPIO.groupedBy= GPIO.groupedBy=
@@ -21,14 +23,15 @@ Mcu.IPNb=4
Mcu.Name=STM32F103C(8-B)Tx Mcu.Name=STM32F103C(8-B)Tx
Mcu.Package=LQFP48 Mcu.Package=LQFP48
Mcu.Pin0=PC13-TAMPER-RTC Mcu.Pin0=PC13-TAMPER-RTC
Mcu.Pin1=PD0-OSC_IN Mcu.Pin1=PC15-OSC32_OUT
Mcu.Pin2=PD1-OSC_OUT Mcu.Pin2=PD0-OSC_IN
Mcu.Pin3=PA11 Mcu.Pin3=PD1-OSC_OUT
Mcu.Pin4=PA12 Mcu.Pin4=PA13
Mcu.Pin5=PA13 Mcu.Pin5=PA14
Mcu.Pin6=PA14 Mcu.Pin6=PB8
Mcu.Pin7=VP_SYS_VS_Systick Mcu.Pin7=PB9
Mcu.PinsNb=8 Mcu.Pin8=VP_SYS_VS_Systick
Mcu.PinsNb=9
Mcu.ThirdPartyNb=0 Mcu.ThirdPartyNb=0
Mcu.UserConstants= Mcu.UserConstants=
Mcu.UserName=STM32F103C8Tx Mcu.UserName=STM32F103C8Tx
@@ -46,16 +49,22 @@ NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
PA11.Mode=CAN_Activate
PA11.Signal=CAN_RX
PA12.Mode=CAN_Activate
PA12.Signal=CAN_TX
PA13.Mode=Serial_Wire PA13.Mode=Serial_Wire
PA13.Signal=SYS_JTMS-SWDIO PA13.Signal=SYS_JTMS-SWDIO
PA14.Mode=Serial_Wire PA14.Mode=Serial_Wire
PA14.Signal=SYS_JTCK-SWCLK PA14.Signal=SYS_JTCK-SWCLK
PB8.Locked=true
PB8.Mode=CAN_Activate
PB8.Signal=CAN_RX
PB9.Locked=true
PB9.Mode=CAN_Activate
PB9.Signal=CAN_TX
PC13-TAMPER-RTC.Locked=true PC13-TAMPER-RTC.Locked=true
PC13-TAMPER-RTC.Signal=GPIO_Output PC13-TAMPER-RTC.Signal=GPIO_Output
PC15-OSC32_OUT.GPIOParameters=GPIO_PuPd
PC15-OSC32_OUT.GPIO_PuPd=GPIO_PULLDOWN
PC15-OSC32_OUT.Locked=true
PC15-OSC32_OUT.Signal=GPXTI15
PD0-OSC_IN.Mode=HSE-External-Oscillator PD0-OSC_IN.Mode=HSE-External-Oscillator
PD0-OSC_IN.Signal=RCC_OSC_IN PD0-OSC_IN.Signal=RCC_OSC_IN
PD1-OSC_OUT.Mode=HSE-External-Oscillator PD1-OSC_OUT.Mode=HSE-External-Oscillator
@@ -65,7 +74,7 @@ ProjectManager.AskForMigrate=true
ProjectManager.BackupPrevious=false ProjectManager.BackupPrevious=false
ProjectManager.CompilerOptimize=6 ProjectManager.CompilerOptimize=6
ProjectManager.ComputerToolchain=false ProjectManager.ComputerToolchain=false
ProjectManager.CoupleFile=false ProjectManager.CoupleFile=true
ProjectManager.CustomerFirmwarePackage= ProjectManager.CustomerFirmwarePackage=
ProjectManager.DefaultFWLocation=true ProjectManager.DefaultFWLocation=true
ProjectManager.DeletePrevious=true ProjectManager.DeletePrevious=true
@@ -86,12 +95,12 @@ ProjectManager.ProjectName=CAN-B
ProjectManager.ProjectStructure= ProjectManager.ProjectStructure=
ProjectManager.RegisterCallBack= ProjectManager.RegisterCallBack=
ProjectManager.StackSize=0x400 ProjectManager.StackSize=0x400
ProjectManager.TargetToolchain=EWARM V8.32 ProjectManager.TargetToolchain=CMake
ProjectManager.ToolChainLocation= ProjectManager.ToolChainLocation=
ProjectManager.UAScriptAfterPath= ProjectManager.UAScriptAfterPath=
ProjectManager.UAScriptBeforePath= ProjectManager.UAScriptBeforePath=
ProjectManager.UnderRoot=false ProjectManager.UnderRoot=false
ProjectManager.functionlistsort= ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_CAN_Init-CAN-false-HAL-true
RCC.ADCFreqValue=36000000 RCC.ADCFreqValue=36000000
RCC.AHBFreq_Value=72000000 RCC.AHBFreq_Value=72000000
RCC.APB1CLKDivider=RCC_HCLK_DIV2 RCC.APB1CLKDivider=RCC_HCLK_DIV2
@@ -113,6 +122,8 @@ RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
RCC.TimSysFreq_Value=72000000 RCC.TimSysFreq_Value=72000000
RCC.USBFreq_Value=72000000 RCC.USBFreq_Value=72000000
RCC.VCOOutput2Freq_Value=8000000 RCC.VCOOutput2Freq_Value=8000000
SH.GPXTI15.0=GPIO_EXTI15
SH.GPXTI15.ConfNb=1
VP_SYS_VS_Systick.Mode=SysTick VP_SYS_VS_Systick.Mode=SysTick
VP_SYS_VS_Systick.Signal=SYS_VS_Systick VP_SYS_VS_Systick.Signal=SYS_VS_Systick
board=custom board=custom

View File

@@ -38,11 +38,11 @@ void MX_CAN_Init(void)
/* USER CODE END CAN_Init 1 */ /* USER CODE END CAN_Init 1 */
hcan.Instance = CAN1; hcan.Instance = CAN1;
hcan.Init.Prescaler = 15; hcan.Init.Prescaler = 18;
hcan.Init.Mode = CAN_MODE_NORMAL; hcan.Init.Mode = CAN_MODE_NORMAL;
hcan.Init.SyncJumpWidth = CAN_SJW_1TQ; hcan.Init.SyncJumpWidth = CAN_SJW_1TQ;
hcan.Init.TimeSeg1 = CAN_BS1_1TQ; hcan.Init.TimeSeg1 = CAN_BS1_13TQ;
hcan.Init.TimeSeg2 = CAN_BS2_1TQ; hcan.Init.TimeSeg2 = CAN_BS2_2TQ;
hcan.Init.TimeTriggeredMode = DISABLE; hcan.Init.TimeTriggeredMode = DISABLE;
hcan.Init.AutoBusOff = DISABLE; hcan.Init.AutoBusOff = DISABLE;
hcan.Init.AutoWakeUp = DISABLE; hcan.Init.AutoWakeUp = DISABLE;
@@ -56,7 +56,7 @@ void MX_CAN_Init(void)
/* USER CODE BEGIN CAN_Init 2 */ /* USER CODE BEGIN CAN_Init 2 */
CAN_FilterTypeDef canfilterconf; CAN_FilterTypeDef canfilterconf;
canfilterconf.FilterActivation = CAN_FILTER_ENABLE; canfilterconf.FilterActivation = CAN_FILTER_ENABLE;
canfilterconf.FilterBank = 18; canfilterconf.FilterBank = 0;
canfilterconf.FilterFIFOAssignment = CAN_FILTER_FIFO1; canfilterconf.FilterFIFOAssignment = CAN_FILTER_FIFO1;
canfilterconf.FilterIdHigh = 0x399 << 5; canfilterconf.FilterIdHigh = 0x399 << 5;
canfilterconf.FilterIdLow = 0x0000; canfilterconf.FilterIdLow = 0x0000;
@@ -81,20 +81,22 @@ void HAL_CAN_MspInit(CAN_HandleTypeDef* canHandle)
/* CAN1 clock enable */ /* CAN1 clock enable */
__HAL_RCC_CAN1_CLK_ENABLE(); __HAL_RCC_CAN1_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE();
/**CAN GPIO Configuration /**CAN GPIO Configuration
PA11 ------> CAN_RX PB8 ------> CAN_RX
PA12 ------> CAN_TX PB9 ------> CAN_TX
*/ */
GPIO_InitStruct.Pin = GPIO_PIN_11; GPIO_InitStruct.Pin = GPIO_PIN_8;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_12; GPIO_InitStruct.Pin = GPIO_PIN_9;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
__HAL_AFIO_REMAP_CAN1_2();
/* CAN1 interrupt Init */ /* CAN1 interrupt Init */
HAL_NVIC_SetPriority(CAN1_RX1_IRQn, 0, 0); HAL_NVIC_SetPriority(CAN1_RX1_IRQn, 0, 0);
@@ -117,10 +119,10 @@ void HAL_CAN_MspDeInit(CAN_HandleTypeDef* canHandle)
__HAL_RCC_CAN1_CLK_DISABLE(); __HAL_RCC_CAN1_CLK_DISABLE();
/**CAN GPIO Configuration /**CAN GPIO Configuration
PA11 ------> CAN_RX PB8 ------> CAN_RX
PA12 ------> CAN_TX PB9 ------> CAN_TX
*/ */
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_11|GPIO_PIN_12); HAL_GPIO_DeInit(GPIOB, GPIO_PIN_8|GPIO_PIN_9);
/* CAN1 interrupt Deinit */ /* CAN1 interrupt Deinit */
HAL_NVIC_DisableIRQ(CAN1_RX1_IRQn); HAL_NVIC_DisableIRQ(CAN1_RX1_IRQn);

View File

@@ -48,6 +48,7 @@ void MX_GPIO_Init(void)
__HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOD_CLK_ENABLE(); __HAL_RCC_GPIOD_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
/*Configure GPIO pin Output Level */ /*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
@@ -59,11 +60,11 @@ void MX_GPIO_Init(void)
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
/*Configure GPIO pin : PA10 (Input with Pull-Down) */ /*Configure GPIO pin : PC15 */
GPIO_InitStruct.Pin = GPIO_PIN_10; GPIO_InitStruct.Pin = GPIO_PIN_15;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
GPIO_InitStruct.Pull = GPIO_PULLDOWN; GPIO_InitStruct.Pull = GPIO_PULLDOWN;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
} }

View File

@@ -65,6 +65,7 @@ uint8_t RxData[8];
uint32_t TxMailbox; uint32_t TxMailbox;
uint8_t isValidData; uint8_t isValidData;
uint8_t status;
/* USER CODE END 0 */ /* USER CODE END 0 */
@@ -102,17 +103,14 @@ int main(void)
HAL_CAN_Start(&hcan); HAL_CAN_Start(&hcan);
HAL_CAN_ActivateNotification(&hcan, CAN_IT_RX_FIFO1_MSG_PENDING); HAL_CAN_ActivateNotification(&hcan, CAN_IT_RX_FIFO1_MSG_PENDING);
HAL_Delay(50);
TxHeader.DLC = 2; TxHeader.DLC = 1;
TxHeader.IDE = CAN_ID_STD; TxHeader.IDE = CAN_ID_STD;
TxHeader.RTR = CAN_RTR_DATA; TxHeader.RTR = CAN_RTR_DATA;
TxHeader.StdId = 0x399; TxHeader.StdId = 0x399;
TxData[0] = 100; TxData[0] = 0x1;
TxData[1] = 255;
int GPIOSTATUS = 0;
int oldGPIOSTATUS = 0;
/* USER CODE END 2 */ /* USER CODE END 2 */
@@ -120,35 +118,27 @@ int main(void)
/* USER CODE BEGIN WHILE */ /* USER CODE BEGIN WHILE */
while (1) while (1)
{ {
/* USER CODE END WHILE */ //HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
GPIOSTATUS = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_10);
if(GPIOSTATUS && !oldGPIOSTATUS){
HAL_Delay(20);
HAL_CAN_AddTxMessage(&hcan, &TxHeader, TxData, &TxMailbox);
}
oldGPIOSTATUS = GPIOSTATUS;
if(isValidData){
isValidData = 0;
for(int i = 0; i < RxData[0]; i++){
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
HAL_Delay(RxData[1]);
}
}
/* USER CODE BEGIN 3 */
} }
/* USER CODE END 3 */ /* USER CODE END 3 */
} }
void HAL_CAN_RxFifo1MsgPendingCallback(CAN_HandleTypeDef *hcan){ void HAL_CAN_RxFifo1MsgPendingCallback(CAN_HandleTypeDef *hcan)
if (HAL_CAN_GetRxMessage(hcan, CAN_RX_FIFO1, &RxHeader, RxData) != HAL_OK) { {
return; HAL_CAN_GetRxMessage(hcan, CAN_RX_FIFO1, &RxHeader, RxData);
}; HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13,RxData[0]);
if(RxHeader.DLC == 2){ }
isValidData = 1;
void HAL_GPIO_EXTI15_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == GPIO_PIN_15)
{
TxData[0] ^= 1;
HAL_CAN_AddTxMessage(&hcan, &TxHeader, TxData, &TxMailbox);
} }
} }
/** /**
* @brief System Clock Configuration * @brief System Clock Configuration
* @retval None * @retval None