update USB product string and include paths for CAN module. starting code with CAN as loopback to check if its working. not yet tested

This commit is contained in:
2025-06-12 19:06:44 -07:00
parent 4ac35de22f
commit 470f4fc4da
4 changed files with 67 additions and 77 deletions

View File

@@ -19,6 +19,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",
@@ -72,6 +73,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

@@ -129,7 +129,7 @@ RCC.USBFreq_Value=48000000
RCC.VCOOutput2Freq_Value=8000000 RCC.VCOOutput2Freq_Value=8000000
USB_DEVICE.CLASS_NAME_FS=CDC USB_DEVICE.CLASS_NAME_FS=CDC
USB_DEVICE.IPParameters=VirtualMode,VirtualModeFS,CLASS_NAME_FS,PRODUCT_STRING_CDC_FS USB_DEVICE.IPParameters=VirtualMode,VirtualModeFS,CLASS_NAME_FS,PRODUCT_STRING_CDC_FS
USB_DEVICE.PRODUCT_STRING_CDC_FS=Modular Keyboard - Module VCOM USB_DEVICE.PRODUCT_STRING_CDC_FS=ModularKeyboardCOM
USB_DEVICE.VirtualMode=Cdc USB_DEVICE.VirtualMode=Cdc
USB_DEVICE.VirtualModeFS=Cdc_FS USB_DEVICE.VirtualModeFS=Cdc_FS
VP_SYS_VS_Systick.Mode=SysTick VP_SYS_VS_Systick.Mode=SysTick

View File

@@ -1,63 +1,24 @@
/* USER CODE BEGIN Header */ /*
/** Sub-module CAN. Sends data to the master (CAN-A)
****************************************************************************** */
* @file : main.c
* @brief : Main program body
******************************************************************************
* @attention
*
* Copyright (c) 2025 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h" #include "main.h"
#include "can.h" #include "can.h"
#include "usb_device.h" #include "usb_device.h"
#include "usbd_cdc_if.h"
#include "string.h"
#include "gpio.h" #include "gpio.h"
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */
/* USER CODE END PTD */
/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
/* USER CODE END PD */
/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */
/* USER CODE END PM */
/* Private variables ---------------------------------------------------------*/
/* USER CODE BEGIN PV */
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void); void SystemClock_Config(void);
/* USER CODE BEGIN PFP */
/* USER CODE END PFP */ CAN_TxHeaderTypeDef TxHeader;
CAN_RxHeaderTypeDef RxHeader;
/* Private user code ---------------------------------------------------------*/ uint8_t TxData[8]; //Buffer for output data
/* USER CODE BEGIN 0 */ uint8_t RxData[8]; //Buffer for input data (probably will never get used)
/* USER CODE END 0 */ //Think of this as a location that will hold the pending data to send untill its ready.
uint32_t TxMailbox;
/** /**
* @brief The application entry point. * @brief The application entry point.
@@ -66,43 +27,70 @@ void SystemClock_Config(void);
int main(void) int main(void)
{ {
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init(); HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config(); SystemClock_Config();
/*
FIXME: USB CDC would be super useful in debugging. This might be also
Related to doing the USB HID since there are something going on with the
USB not getting detected on my device properly
At the mmoment, I'm getting device "address not responding" error using dmesg } grep usb
Some searching up hints that this is a common problem with Bluepills but because BP comes from many
Manufacturers its pretty hard to track it down to one problem. Can't find the schematic for ours too
The problem seems to be related to the resistor on the DP+ and DP- on the USB
Either that or we got a counterfiet STM32 board. I'll test it with a reputable brand to see. Other functionalities work though
*/
/* USER CODE BEGIN SysInit */ /* USER CODE BEGIN SysInit */
GPIO_InitTypeDef USB_RESISTOR = {0};
USB_RESISTOR.Pin = GPIO_PIN_12;
USB_RESISTOR.Mode = GPIO_MODE_OUTPUT_OD;
USB_RESISTOR.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA,&USB_RESISTOR);
/* USER CODE END SysInit */ //Force Reset USB
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_RESET);
HAL_Delay(50);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_SET);
/* Initialize all configured peripherals */
MX_GPIO_Init(); MX_GPIO_Init();
MX_CAN_Init(); MX_CAN_Init();
//Enables an interrupt when a data is recieved.
//This includes your own data you sent so this is when filters comes to play
HAL_CAN_ActivateNotification(&hcan, CAN_IT_RX_FIFO0_MSG_PENDING);
HAL_CAN_Start(&hcan);
TxHeader.DLC = 1; //The lenght of data to send (in bytes)
TxHeader.ExtId = 0; //The ext. ID of the device
TxHeader.IDE = CAN_ID_STD; //No need for us to use ext. ID
TxHeader.RTR = CAN_RTR_DATA; //We are sending data...
TxHeader.StdId = 0x100; //The ID of this module is now 100. Any devices with a filter matching this ID would read it
TxHeader.TransmitGlobalTime = DISABLE;
//Sample message send
TxData[0] = 0xf1;
MX_USB_DEVICE_Init(); MX_USB_DEVICE_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1) while (1)
{ {
/* USER CODE END WHILE */ HAL_CAN_AddTxMessage(&hcan, &TxHeader, TxData, &TxMailbox);
HAL_Delay(1000);
/* USER CODE BEGIN 3 */
} }
/* USER CODE END 3 */
}
void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan)
{
//Read message from the RxCAN and store it on RxHeader
HAL_CAN_GetRxMessage(hcan, CAN_RX_FIFO0, &RxHeader, RxData);
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
char *buf = RxData[0];
CDC_Transmit_FS((uint8_t *)buf,strlen(buf));
} }
/** /**

View File

@@ -66,7 +66,7 @@
#define USBD_LANGID_STRING 1033 #define USBD_LANGID_STRING 1033
#define USBD_MANUFACTURER_STRING "STMicroelectronics" #define USBD_MANUFACTURER_STRING "STMicroelectronics"
#define USBD_PID_FS 22336 #define USBD_PID_FS 22336
#define USBD_PRODUCT_STRING_FS "Modular Keyboard - Module VCOM" #define USBD_PRODUCT_STRING_FS "ModularKeyboardCOM"
#define USBD_CONFIGURATION_STRING_FS "CDC Config" #define USBD_CONFIGURATION_STRING_FS "CDC Config"
#define USBD_INTERFACE_STRING_FS "CDC Interface" #define USBD_INTERFACE_STRING_FS "CDC Interface"