0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【筆記】單片機(jī)的“身份證號(hào)碼”實(shí)現(xiàn)的三種方式

撞上電子 ? 2023-05-30 09:32 ? 次閱讀

許多IC芯片都具有唯一的身份碼(或序列號(hào)),用于識(shí)別和區(qū)分不同的芯片。以下是一些常見(jiàn)的IC芯片具有身份碼的類(lèi)型、優(yōu)勢(shì)以及針對(duì)每種芯片的讀取身份碼的示例程序:

1.AT24C02 EEPROM芯片
軟件環(huán)境和庫(kù):Arduino IDE、Wire庫(kù)。


#include
#define EEPROM_ADDR 0x50
void setup() { Wire.begin(); // 初始化Wire庫(kù) Serial.begin(9600);}
void loop() { Wire.beginTransmission(EEPROM_ADDR); Wire.write(0xFA); // 身份碼存儲(chǔ)地址 Wire.endTransmission();
Wire.requestFrom(EEPROM_ADDR, 4); // 請(qǐng)求讀取4個(gè)字節(jié)的數(shù)據(jù) while (Wire.available()) { byte data = Wire.read(); Serial.print(data < 0x10 ? "0" : ""); Serial.print(data, HEX); Serial.print(" "); } Serial.println(); delay(1000);}

注釋和分析:

通過(guò)Wire庫(kù)與AT24C02 EEPROM芯片進(jìn)行I2C通信

將EEPROM芯片的I2C地址設(shè)置為0x50。

在循環(huán)中,首先開(kāi)始I2C傳輸并寫(xiě)入讀取身份碼的地址0xFA。

接著請(qǐng)求從EEPROM芯片讀取4個(gè)字節(jié)的數(shù)據(jù)。

使用Wire.available()檢查是否有可用的數(shù)據(jù),并逐個(gè)讀取字節(jié)。

打印每個(gè)字節(jié)的值(如果小于0x10,在前面補(bǔ)0)。

延遲1秒鐘后,再次執(zhí)行讀取操作。

型號(hào):AT24C02

優(yōu)勢(shì):低功耗、可靠性高、容量適中(2K位),適用于存儲(chǔ)配置信息、產(chǎn)品序列號(hào)等。

2.STM32系列MCU芯片

軟件環(huán)境和庫(kù):STM32Cube HAL庫(kù)。

#include "stm32f1xx_hal.h"#include
void SystemClock_Config(void);
int main(void) { HAL_Init(); SystemClock_Config();
uint32_t uniqueID[3];
uniqueID[0] = HAL_GetUIDw0(); uniqueID[1] = HAL_GetUIDw1(); uniqueID[2] = HAL_GetUIDw2();
printf("Unique ID: %08X-%08X-%08X\n", uniqueID[2], uniqueID[1], uniqueID[0]);
while (1) { // 主程序其他邏輯 }}
void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct; RCC_ClkInitTypeDef RCC_ClkInitStruct;
__HAL_RCC_PWR_CLK_ENABLE(); __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; RCC_OscInitStruct.HSIState = RCC_HSI_ON; RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI_DIV2; RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL16;
HAL_RCC_OscConfig(&RCC_OscInitStruct);
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2);}

注釋和分析:

使用STM32Cube HAL庫(kù)進(jìn)行開(kāi)發(fā)。

在主函數(shù)中,初始化系統(tǒng)和時(shí)鐘,獲取MCU的唯一身份碼(通過(guò)HAL_GetUIDw0、HAL_GetUIDw1和HAL_GetUIDw2函數(shù))。

使用printf函數(shù)打印身份碼。

在while循環(huán)中可以添加其他主程序邏輯。

SystemClock_Config函數(shù)配置MCU的時(shí)鐘設(shè)置。

型號(hào):STM32F103C8T6

優(yōu)勢(shì):高性能、豐富的外設(shè)接口,適用于嵌入式系統(tǒng)工業(yè)自動(dòng)化等領(lǐng)域。

3.RFID芯片 MFRC522:

軟件環(huán)境和庫(kù):Arduino IDE、MFRC522庫(kù)。

#include #include
MFRC522 mfrc522(10, 9); // 定義MFRC522模塊的RST和SS引腳
void setup() { Serial.begin(9600); SPI.begin(); mfrc522.PCD_Init(); // 初始化MFRC522模塊}
void loop() { if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial()) { Serial.print("UID: "); for (byte i = 0; i < mfrc522.uid.size; i++) { Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "); // 打印UID的每個(gè)字節(jié),不足兩位前面補(bǔ)0 Serial.print(mfrc522.uid.uidByte[i], HEX); } Serial.println(); mfrc522.PICC_HaltA(); }}

注釋和分析:

使用MFRC522庫(kù)和SPI庫(kù)與MFRC522 RFID芯片進(jìn)行通信。

在setup函數(shù)中,初始化串口、SPI和MFRC522模塊。

在循環(huán)中,檢測(cè)是否有新的RFID卡片出現(xiàn),并讀取卡片的序列號(hào)(UID)。

逐個(gè)字節(jié)打印UID,并在不足兩位時(shí)前面補(bǔ)0。

打印完UID后,通過(guò)mfrc522.PICC_HaltA()命令使RFID卡片進(jìn)入休眠狀態(tài)。

型號(hào):MFRC522

優(yōu)勢(shì):長(zhǎng)通信距離、多種安全特性,適用于物流追蹤、智能卡、門(mén)禁等領(lǐng)域。

這些程序示例提供了讀取身份碼的基本框架和庫(kù)函數(shù)的使用方法。根據(jù)不同的芯片和庫(kù),具體的程序?qū)崿F(xiàn)會(huì)有所差異。請(qǐng)根據(jù)所使用的芯片和開(kāi)發(fā)環(huán)境,參考相關(guān)的數(shù)據(jù)手冊(cè)、庫(kù)文檔和示例代碼,進(jìn)行必要的調(diào)試和修改。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6026

    文章

    44456

    瀏覽量

    631007
  • IC
    IC
    +關(guān)注

    關(guān)注

    36

    文章

    5838

    瀏覽量

    174919
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    單片機(jī)三種總線(xiàn)結(jié)構(gòu)

    單片機(jī)三種總線(xiàn)結(jié)構(gòu)包括地址總線(xiàn)(Address Bus, AB)、數(shù)據(jù)總線(xiàn)(Data Bus, DB)和控制總線(xiàn)(Control Bus, CB)。這三種總線(xiàn)在單片機(jī)內(nèi)部及與外部設(shè)備
    的頭像 發(fā)表于 09-10 11:32 ?960次閱讀

    二代身份證識(shí)別儀身份證閱讀器讀卡器

    、通道閘機(jī)、寫(xiě)字樓、學(xué)校、商場(chǎng)、商店、社區(qū)、公共服務(wù)及管理項(xiàng)目等需要用到身份證核對(duì)的設(shè)備。 二、 產(chǎn)品規(guī)格(組成部分) 104mm(長(zhǎng))*69mm(寬)*10mm(高) 、基本參數(shù)
    發(fā)表于 09-07 15:09

    身份證云解碼模塊嵌入式身份證讀卡器 (CSYJM-3)

    接口。 數(shù)據(jù)傳輸采用雙向分段加密算法,***數(shù)據(jù)的性。 應(yīng)用場(chǎng)景 適用于辦公區(qū)域、酒店、通道閘機(jī)、寫(xiě)字樓、學(xué)校、商場(chǎng)、商店、社區(qū)、公共服務(wù)及管理項(xiàng)目等需要用到身份證核對(duì)的設(shè)備。
    發(fā)表于 09-04 14:57

    如何進(jìn)行IP檢測(cè)

    如何避免網(wǎng)絡(luò)出現(xiàn)故障,增強(qiáng)網(wǎng)絡(luò)安全性?又如何更加合理的規(guī)劃分配網(wǎng)絡(luò)資源?這就不得的提到我們需要定期給自家或企業(yè)中的IP進(jìn)行檢測(cè)了。IP 地址就像是網(wǎng)絡(luò)世界中設(shè)備的“身份證號(hào)碼”,定時(shí)進(jìn)行檢測(cè),能夠
    的頭像 發(fā)表于 07-26 14:09 ?384次閱讀
    如何進(jìn)行IP檢測(cè)

    你對(duì)身份證閱讀器CICR-3X的了解有多少?

    方式: 全速 USB2.0,HID 協(xié)議接口 支持外國(guó)人居留身份證識(shí)讀 支持港澳臺(tái)居民居住證 供電 5V 兼容 ISO/IEC 14443 A/B 第二代身份證鑒別真?zhèn)?產(chǎn)品穩(wěn)定、可靠 工作溫度:-25
    發(fā)表于 06-26 16:23

    MAC地址碼申請(qǐng)指南:散裝串號(hào)與主體關(guān)聯(lián)的大中小號(hào)段的區(qū)別

    MAC地址是網(wǎng)絡(luò)設(shè)備(如計(jì)算機(jī)、手機(jī)、路由器等)在局域網(wǎng)中的唯一標(biāo)識(shí)符,可以說(shuō)MAC地址就是一臺(tái)設(shè)備的身份證號(hào)碼。全球范圍內(nèi)不管是什么地區(qū),MAC地址都是由IEEE統(tǒng)一下發(fā)分配并管理,用于網(wǎng)絡(luò)通信
    的頭像 發(fā)表于 04-24 17:48 ?719次閱讀
    MAC地址碼申請(qǐng)指南:散裝串號(hào)與主體關(guān)聯(lián)的大中小號(hào)段的區(qū)別

    簡(jiǎn)述斬波電路的三種控制方式

    斬波電路是一常見(jiàn)的電力電子器件,廣泛應(yīng)用于直流電壓調(diào)節(jié)、電壓變換、電流變換等領(lǐng)域。它可以實(shí)現(xiàn)對(duì)電流和電壓的控制,以滿(mǎn)足不同的電氣設(shè)備的需求。斬波電路的控制方式主要有三種:脈寬調(diào)制控制
    的頭像 發(fā)表于 03-11 15:22 ?2694次閱讀

    運(yùn)動(dòng)控制的三種控制方式

    非標(biāo)項(xiàng)目中有非常多的運(yùn)動(dòng)控制,根據(jù)系統(tǒng)配置、電機(jī)類(lèi)型以及精度需求的不同主要有三種控制方式:開(kāi)環(huán)控制、半閉環(huán)控制、全閉環(huán)控制。
    的頭像 發(fā)表于 01-23 09:48 ?1140次閱讀
    運(yùn)動(dòng)控制的<b class='flag-5'>三種</b>控制<b class='flag-5'>方式</b>

    嵌入式Linux開(kāi)發(fā)的三種方式

    嵌入式Linux開(kāi)發(fā)主要有三種方式:裸機(jī)開(kāi)發(fā)、SDK開(kāi)發(fā)和驅(qū)動(dòng)開(kāi)發(fā)。
    的頭像 發(fā)表于 01-22 14:22 ?876次閱讀

    單片機(jī)怎么能夠與手機(jī)實(shí)現(xiàn)遠(yuǎn)程通訊呢?

    單片機(jī)怎么能夠與手機(jī)實(shí)現(xiàn)遠(yuǎn)程通訊呢? 隨著物聯(lián)網(wǎng)的快速發(fā)展,單片機(jī)作為物聯(lián)網(wǎng)應(yīng)用中最常見(jiàn)的控制器,與手機(jī)實(shí)現(xiàn)遠(yuǎn)程通訊已成為一趨勢(shì)。通過(guò)
    的頭像 發(fā)表于 01-15 14:59 ?2443次閱讀

    分布式鎖的三種實(shí)現(xiàn)方式

    分布式鎖的三種實(shí)現(xiàn)方式? 分布式鎖是在分布式系統(tǒng)中用于實(shí)現(xiàn)對(duì)共享資源進(jìn)行訪問(wèn)控制的一機(jī)制。分布式鎖的實(shí)
    的頭像 發(fā)表于 12-28 10:01 ?779次閱讀

    變頻器的三種控制方式 | 變頻器三種控制方式的優(yōu)缺點(diǎn)

    ? ? ? 變頻器是一電力調(diào)節(jié)設(shè)備,它通過(guò)改變電機(jī)的工作頻率來(lái)調(diào)節(jié)電機(jī)的轉(zhuǎn)速。在實(shí)際應(yīng)用中,變頻器通常采用三種控制方式:開(kāi)環(huán)控制、閉環(huán)控制和矢量控制。這三種控制
    的頭像 發(fā)表于 12-18 09:56 ?3105次閱讀
    變頻器的<b class='flag-5'>三種</b>控制<b class='flag-5'>方式</b> | 變頻器<b class='flag-5'>三種</b>控制<b class='flag-5'>方式</b>的優(yōu)缺點(diǎn)

    如何用三種不同的方法來(lái)用按鈕控制燈光

    在電子和自動(dòng)化中,一個(gè)常見(jiàn)的任務(wù)是使用按鈕來(lái)控制燈的開(kāi)/關(guān)狀態(tài)。這可以用不同的方式實(shí)現(xiàn),取決于設(shè)備的類(lèi)型和涉及的邏輯。在本文中,我們將比較使用單片機(jī)、PLC和硬件連接來(lái)實(shí)現(xiàn)這個(gè)任務(wù)的
    的頭像 發(fā)表于 11-10 11:47 ?2459次閱讀
    如何用<b class='flag-5'>三種</b>不同的方法來(lái)用按鈕控制燈光

    單片機(jī)數(shù)碼管驅(qū)動(dòng)學(xué)習(xí)筆記

    51單片機(jī)數(shù)碼管驅(qū)動(dòng)筆記
    發(fā)表于 11-06 17:23 ?1次下載

    請(qǐng)問(wèn)單片機(jī)中,如何使用片內(nèi)時(shí)鐘振蕩方式和外部時(shí)鐘方式

    。 單片機(jī)實(shí)現(xiàn)數(shù)據(jù)處理和執(zhí)行程序,需要一個(gè)時(shí)鐘信號(hào)來(lái)引導(dǎo)CPU的運(yùn)行。單片機(jī)可以使用片內(nèi)時(shí)鐘振蕩方式和外部時(shí)鐘方式
    的頭像 發(fā)表于 10-25 15:02 ?1188次閱讀