mirror of
https://github.com/XIVN1987/DAPLink.git
synced 2026-09-26 22:16:11 +00:00
update serial number string with chip unique ID
This commit is contained in:
@@ -59,6 +59,7 @@ void SysTick_Handler(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void int_to_unicode(uint32_t value , uint8_t *pbuf , uint8_t len);
|
||||||
void USB_Config(void)
|
void USB_Config(void)
|
||||||
{
|
{
|
||||||
NVIC_InitTypeDef NVIC_InitStructure;
|
NVIC_InitTypeDef NVIC_InitStructure;
|
||||||
@@ -67,6 +68,15 @@ void USB_Config(void)
|
|||||||
RCC_USBCLKConfig(RCC_USBCLKSource_PLLCLK_Div3);
|
RCC_USBCLKConfig(RCC_USBCLKSource_PLLCLK_Div3);
|
||||||
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USB, ENABLE);
|
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USB, ENABLE);
|
||||||
|
|
||||||
|
/* update serial number string with chip unique ID */
|
||||||
|
extern uint8_t USBD_StringSerial [];
|
||||||
|
uint32_t serial0 = *(uint32_t*)0x1FFFF7E8;
|
||||||
|
uint32_t serial1 = *(uint32_t*)0x1FFFF7EC;
|
||||||
|
uint32_t serial2 = *(uint32_t*)0x1FFFF7F0;
|
||||||
|
|
||||||
|
int_to_unicode(serial0 + serial2, &USBD_StringSerial[2], 8);
|
||||||
|
int_to_unicode(serial1 + serial2, &USBD_StringSerial[18], 4);
|
||||||
|
|
||||||
USB_Init();
|
USB_Init();
|
||||||
|
|
||||||
NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn;
|
NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn;
|
||||||
@@ -143,3 +153,22 @@ void Delay_Ms(uint32_t n)
|
|||||||
for(int i = 0; i < SystemCoreClock / 4000 * n; i++) __NOP();
|
for(int i = 0; i < SystemCoreClock / 4000 * n; i++) __NOP();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void int_to_unicode(uint32_t value , uint8_t *pbuf , uint8_t len)
|
||||||
|
{
|
||||||
|
for(int i = 0 ; i < len ; i++)
|
||||||
|
{
|
||||||
|
if((value >> 28) < 0xA)
|
||||||
|
{
|
||||||
|
pbuf[2 * i] = (value >> 28) + '0';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pbuf[2 * i] = (value >> 28) + 'A' - 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
pbuf[2 * i + 1] = 0;
|
||||||
|
|
||||||
|
value = value << 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -402,7 +402,7 @@ const uint8_t USB_StringProduct[] =
|
|||||||
|
|
||||||
|
|
||||||
/* Serial Number Descriptor */
|
/* Serial Number Descriptor */
|
||||||
const uint8_t USB_StringSerialNbr[] =
|
uint8_t USB_StringSerialNbr[] =
|
||||||
{
|
{
|
||||||
USB_SIZE_STRING_SERIALNBR,
|
USB_SIZE_STRING_SERIALNBR,
|
||||||
USB_DESCR_TYP_STRING,
|
USB_DESCR_TYP_STRING,
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ extern const uint8_t USB_CfgDesc_HS[];
|
|||||||
extern const uint8_t USB_StringLangID[];
|
extern const uint8_t USB_StringLangID[];
|
||||||
extern const uint8_t USB_StringVendor[];
|
extern const uint8_t USB_StringVendor[];
|
||||||
extern const uint8_t USB_StringProduct[];
|
extern const uint8_t USB_StringProduct[];
|
||||||
extern const uint8_t USB_StringSerialNbr[];
|
extern uint8_t USB_StringSerialNbr[];
|
||||||
extern const uint8_t USB_QualifierDesc[];
|
extern const uint8_t USB_QualifierDesc[];
|
||||||
extern const uint8_t HID_ReportDesc_FS[];
|
extern const uint8_t HID_ReportDesc_FS[];
|
||||||
extern const uint8_t HID_ReportDesc_HS[];
|
extern const uint8_t HID_ReportDesc_HS[];
|
||||||
|
|||||||
+30
-1
@@ -11,7 +11,7 @@ volatile uint32_t SysTick_ms = 0;
|
|||||||
|
|
||||||
|
|
||||||
void SysTick_Config(uint32_t ticks);
|
void SysTick_Config(uint32_t ticks);
|
||||||
|
void int_to_unicode(uint32_t value , uint8_t *pbuf , uint8_t len);
|
||||||
|
|
||||||
void main(void)
|
void main(void)
|
||||||
{
|
{
|
||||||
@@ -19,6 +19,15 @@ void main(void)
|
|||||||
|
|
||||||
VCOM_Init();
|
VCOM_Init();
|
||||||
|
|
||||||
|
/* update serial number string with chip unique ID */
|
||||||
|
extern uint8_t USB_StringSerialNbr[];
|
||||||
|
uint32_t serial0 = *(uint32_t*)0x1FFFF7E8;
|
||||||
|
uint32_t serial1 = *(uint32_t*)0x1FFFF7EC;
|
||||||
|
uint32_t serial2 = *(uint32_t*)0x1FFFF7F0;
|
||||||
|
|
||||||
|
int_to_unicode(serial0 + serial2, &USB_StringSerialNbr[2], 8);
|
||||||
|
int_to_unicode(serial1 + serial2, &USB_StringSerialNbr[18], 4);
|
||||||
|
|
||||||
USBHS_RCC_Init();
|
USBHS_RCC_Init();
|
||||||
USBHS_Device_Init(ENABLE);
|
USBHS_Device_Init(ENABLE);
|
||||||
|
|
||||||
@@ -52,3 +61,23 @@ void SysTick_Handler(void)
|
|||||||
|
|
||||||
SysTick_ms++;
|
SysTick_ms++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void int_to_unicode(uint32_t value , uint8_t *pbuf , uint8_t len)
|
||||||
|
{
|
||||||
|
for(int i = 0 ; i < len ; i++)
|
||||||
|
{
|
||||||
|
if((value >> 28) < 0xA)
|
||||||
|
{
|
||||||
|
pbuf[2 * i] = (value >> 28) + '0';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pbuf[2 * i] = (value >> 28) + 'A' - 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
pbuf[2 * i + 1] = 0;
|
||||||
|
|
||||||
|
value = value << 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user