国产无码黄电影_麻豆av一区二区三区不卡_伦理在线视频免费观看视频_九九热这里只有精品33_亚洲av中文无码乱人伦在线播放_国产成人精品aa毛片久久_成人欧美一区二区三区的电影在线_78精品国产综合久久香蕉_亚洲日本成本人在线观看

0 賣盤信息
BOM詢價
您現在的位置: 首頁 > 電子資訊 >業界動態 > 泰克合作伙伴柯泰發布基于TOF的3D傳感VCSEL陣列測試

泰克合作伙伴柯泰發布基于TOF的3D傳感VCSEL陣列測試

來源: 中電網
2021-03-10
類別:業界動態
eye 21
文章創建人 拍明

原標題:泰克合作伙伴柯泰發布基于TOF的3D傳感VCSEL陣列測試

基于STM32實現韋根(Wiegand)協議接收,通常用于門禁系統、考勤系統等需要讀取RFID卡信息的場合。韋根協議是一種簡單的串行通信協議,通常用于讀卡器與控制器之間的數據傳輸。其基本的信號特性包括兩條數據線(D0和D1),以及一個時鐘信號(通常由數據線的跳變產生)。

以下是一個基于STM32實現韋根協議接收的基本步驟和示例代碼:

硬件準備

  1. STM32開發板:確保開發板上有足夠的GPIO口用于接收韋根信號。

  2. 韋根讀卡器:通常讀卡器會提供D0、D1和GND三個接口。

  3. 連接線:將讀卡器的D0、D1分別連接到STM32的GPIO口,GND連接到開發板的GND。

軟件實現

1. 配置GPIO

首先,需要配置STM32的GPIO口為輸入模式,用于接收韋根信號??梢允褂肧TM32的HAL庫或標準外設庫進行配置。

c復制代碼


// 假設D0連接到GPIOA的第0腳,D1連接到GPIOA的第1腳

GPIO_InitTypeDef GPIO_InitStruct = {0};



// 使能GPIOA時鐘

__HAL_RCC_GPIOA_CLK_ENABLE();



// 配置D0引腳

GPIO_InitStruct.Pin = GPIO_PIN_0;

GPIO_InitStruct.Mode = GPIO_MODE_INPUT;

GPIO_InitStruct.Pull = GPIO_NOPULL;

HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);



// 配置D1引腳

GPIO_InitStruct.Pin = GPIO_PIN_1;

GPIO_InitStruct.Mode = GPIO_MODE_INPUT;

GPIO_InitStruct.Pull = GPIO_NOPULL;

HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

2. 初始化定時器(可選)

如果需要精確測量韋根信號的脈沖寬度或時間間隔,可以配置一個定時器來捕捉這些信號。

3. 編寫中斷服務程序

為了實時響應韋根信號的跳變,可以配置外部中斷。例如,當D0或D1發生變化時,觸發中斷。


image.png

c復制代碼


// 假設使用EXTI0和EXTI1中斷

void MX_GPIO_EXTI_Init(void)

{

__HAL_RCC_SYSCFG_CLK_ENABLE();



// 配置D0引腳為EXTI0中斷

GPIO_InitTypeDef GPIO_InitStruct = {0};

GPIO_InitStruct.Pin = GPIO_PIN_0;

GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING;

GPIO_InitStruct.Pull = GPIO_NOPULL;

HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);



// 配置EXTI0中斷優先級和使能

HAL_NVIC_SetPriority(EXTI0_IRQn, 2, 0);

HAL_NVIC_EnableIRQ(EXTI0_IRQn);



// 配置D1引腳為EXTI1中斷

GPIO_InitStruct.Pin = GPIO_PIN_1;

HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);



// 配置EXTI1中斷優先級和使能

HAL_NVIC_SetPriority(EXTI1_IRQn, 2, 0);

HAL_NVIC_EnableIRQ(EXTI1_IRQn);

}



// EXTI0中斷服務程序

void EXTI0_IRQHandler(void)

{

HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);

}



// EXTI1中斷服務程序

void EXTI1_IRQHandler(void)

{

HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_1);

}



// GPIO中斷回調函數

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)

{

static uint8_t bit_count = 0;

static uint32_t data = 0;

static uint8_t parity = 0;



if (GPIO_Pin == GPIO_PIN_0)

{

// D0信號變化

// 根據D0和D1的狀態確定當前位

uint8_t bit = (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1) == GPIO_PIN_SET) ? 1 : 0;



// 更新數據和奇偶校驗

data = (data >> 1) | (bit << 23);

parity += bit;



// 位計數增加

bit_count++;



// 如果接收完一個字節(26位或34位,根據韋根版本)

if (bit_count == 26 || bit_count == 34)

{

// 檢查奇偶校驗

if ((parity % 2) == 0)

{

// 奇偶校驗正確,處理數據

ProcessWiegandData(data);

}



// 重置位計數、數據和奇偶校驗

bit_count = 0;

data = 0;

parity = 0;

}

}

// 如果需要處理D1信號的變化,可以在這里添加代碼

}



// 處理韋根數據的函數

void ProcessWiegandData(uint32_t data)

{

// 在這里處理接收到的韋根數據

// 例如,將數據存儲到緩沖區或發送到其他模塊

}

注意事項

  1. 韋根協議版本:韋根協議有多個版本(如韋根26、韋根34等),不同版本的數據格式和奇偶校驗方式可能有所不同。在編寫代碼時,需要確保與所使用的讀卡器協議相匹配。

  2. 噪聲處理:韋根信號可能會受到電磁干擾或機械振動的影響,導致誤觸發中斷。因此,在編寫代碼時,需要添加適當的噪聲處理邏輯,以提高系統的穩定性。

  3. 時序要求:韋根協議對信號的時序有一定的要求。在編寫代碼時,需要確保能夠正確捕捉和處理韋根信號的上升沿和下降沿。

通過上述步驟和示例代碼,你可以在STM32上實現韋根協議的接收功能。根據具體的應用需求,你可能還需要對代碼進行進一步的優化和擴展。


責任編輯:

【免責聲明】

1、本文內容、數據、圖表等來源于網絡引用或其他公開資料,版權歸屬原作者、原發表出處。若版權所有方對本文的引用持有異議,請聯系拍明芯城(marketing@iczoom.com),本方將及時處理。

2、本文的引用僅供讀者交流學習使用,不涉及商業目的。

3、本文內容僅代表作者觀點,拍明芯城不對內容的準確性、可靠性或完整性提供明示或暗示的保證。讀者閱讀本文后做出的決定或行為,是基于自主意愿和獨立判斷做出的,請讀者明確相關結果。

4、如需轉載本方擁有版權的文章,請聯系拍明芯城(marketing@iczoom.com)注明“轉載原因”。未經允許私自轉載拍明芯城將保留追究其法律責任的權利。

拍明芯城擁有對此聲明的最終解釋權。

相關資訊

資訊推薦
云母電容公司_云母電容生產廠商

云母電容公司_云母電容生產廠商

開關三極管13007的規格參數、引腳圖、開關電源電路圖?三極管13007可以用什么型號替代?

開關三極管13007的規格參數、引腳圖、開關電源電路圖?三極管13007可以用什么型號替代?

74ls74中文資料匯總(74ls74引腳圖及功能_內部結構及應用電路)

74ls74中文資料匯總(74ls74引腳圖及功能_內部結構及應用電路)

芯片lm2596s開關電壓調節器的中文資料_引腳圖及功能_內部結構及原理圖_電路圖及封裝

芯片lm2596s開關電壓調節器的中文資料_引腳圖及功能_內部結構及原理圖_電路圖及封裝

芯片UA741運算放大器的資料及參數_引腳圖及功能_電路原理圖?ua741運算放大器的替代型號有哪些?

芯片UA741運算放大器的資料及參數_引腳圖及功能_電路原理圖?ua741運算放大器的替代型號有哪些?

28nm光刻機卡住“02專項”——對于督工部分觀點的批判(睡前消息353期)

28nm光刻機卡住“02專項”——對于督工部分觀點的批判(睡前消息353期)

拍明芯城微信圖標

各大手機應用商城搜索“拍明芯城”

下載客戶端,隨時隨地買賣元器件!

拍明芯城公眾號
拍明芯城抖音
拍明芯城b站
拍明芯城頭條
拍明芯城微博
拍明芯城視頻號
拍明
廣告
恒捷廣告
廣告
深亞廣告
廣告
原廠直供
廣告