1. Số định danh unique ID là gì? Ứng dụng ra sao?
Là dãy số 96 bit được lưu trong bộ nhớ không thể xóa của chip STM32. Mỗi con chip STM32 chính hãng sẽ có một dãy số khác nhau, không con nào trùng con nào. Như vậy dãy số này ta có thể dùng để định danh cho từng sản phẩm, hoặc làm khóa cứng cho thiết bị...
Một ứng dụng cơ bản hay sử dụng đó là khi dùng giao tiếp USB trên chip STM32, số UID này sẽ được làm số Serial của thiết bị USB đó ạ.
2. Cách đọc ra số ID của chip STM32
Căn cứ vào từng dòng chip, tìm địa chỉ của nó trong Flash, ví dụ:
- Với dòng F1: địa chỉ unique ID là: 0x1FFFF7E8
- Định nghĩa một biến con trỏ:
#define STM32_UUID ((uint32_t *)0x1FFFF7E8)
- Sử dụng các giá trị của biến con trỏ:
printf("Unique ID:0x%08X:0x%08X:0x%08X\r\n",STM32_UUID[0],STM32_UUID[1],STM32_UUID[2]);
Lưu ý: Dãy số 96 bit này có thể đọc ra theo kiểu single bytes/half-words/words. Sau đó có thể tổ hợp lại theo các thuật toán tùy chỉnh
3. Bảng địa chỉ của một số dòng chip thông dụng:
Dòng chip STM32 |
Địa chỉ đọc UID |
F0 |
0x1FFF F7AC |
F1 |
0x1FFFF7E8 |
F2 |
0x1FFF7A10 |
F3 |
0x1FFF F7AC |
F4 |
0x1FFF 7A10 |
F7 |
0x1FF0 F420 |
H7 |
0x1FFF7590 |
L0 |
0x1FF8 007C |
Các địa chỉ trên có thể tìm trong Reference manual của từng dòng chip để chính xác hơn các bạn nhé!