1. 程式人生 > >讀卡器專案總結(二)— FM17520晶片使用

讀卡器專案總結(二)— FM17520晶片使用

主要學習過程:

1)認識FM17520晶片功能特性、使用方法、介面通訊編寫、暫存器操作等。

2)封裝軟體應用函式,打包成庫檔案,提供應用層呼叫。

3)歸納:外設晶片一般應用方法

(一)關於晶片應用:

【知識點】首先,知道晶片能幹什麼?一般查閱晶片手冊的首頁就有:產品簡介。其中包含著該晶片型號所代表的重要資訊,我們能從中獲取第一手資料。

在FM17520晶片手冊裡面,就可以知道該晶片是在非接觸式卡片方面使用的,並且獲知其基本特性(介面型別、通訊距離及速度、功耗特性、記憶體容量、各種硬體特性等)

【知識點】其次,找到該晶片的結構框圖,加深對晶片的理解。結構框圖往往是可以提供了晶片的功能架構及其內不同組成之間的關係。

本次重框圖下獲知:晶片內部架構,通訊介面、以及最為重要的暫存器組成。

【知識點】獲取暫存器組成,對晶片的操作幾乎都通過暫存器來實現,因為暫存器是嵌入式軟體的直接操作物件。

而在FM17520晶片手冊對暫存器進行了分型別處理,包括了1)命令和狀態2)通訊3)配置4)測試,四大型別暫存器。

【知識點】主控晶片與外設晶片之間的通訊介面,此步驟最為重要,之後我們對晶片的操作都是依賴於通訊介面。

FM17520的介面型別有SPI、UART、I2C三種連線方式,晶片在上電期間就自動完成Host介面自動偵測。同時,介面部分都必須要細心閱讀,在本次除錯SPI通訊的過程中,發現讀或寫暫存器操作都需要同時編寫讀寫FIFO暫存器(比如說,讀的過程中,需要寫一個地址和寫一個0x00的資料後連續讀取兩次)。

【知識點】由此可見,通訊介面程式的編寫要注意的有兩點:其一,通訊介面程式符合某通訊介面型別的基本通訊方式(SPI或I2C則按照其規範編寫),其二,最終目的是與外設晶片進行的通訊,也必須要符合外設晶片規定的通訊方式。

【知識點】以上的通訊介面是主控晶片與外設晶片之間的通訊,外設晶片與卡片(M1S卡)之間的通訊則是類比電路介面與非接觸式介面來控制的,外設晶片通過發射無線資訊與卡片進行交換資料,最終達到我們跟卡片交換資料,完成整體通訊。

在此需要說明的,涉及到的無線通訊是需要軟硬體共同調節的,比如控制發射驅動功率、距離等。這個過程是完成了通訊介面程式的編寫後進行。

【知識點】資料交換儲存器(一般稱為FIFO暫存器),資料交換是貫穿整個完整通訊過程的。

FM17520的FIFO用於主控晶片與FM17520內部狀態機之間的輸入輸出資料流的緩衝,實現一個8*64位的FIFO緩衝器。也就是說,我們一旦設定好類比電路(無線部分),之後的操作都是根據我們編寫通訊介面函式來實現的。

【知識點】就如同微控制器一樣,外設晶片亦具備了外部中斷請求系統。

在FM17520中,我們通過使用IRQ引腳,來標記外設晶片是否具有外部中斷請求,一旦檢測到IRQ引腳發生中斷,我們就可以通過特定的IRQ暫存器來判斷中斷型別,從而獲取不同的中斷資訊,進而作出相應的操作。

【知識點】嵌入式裝置往往需要穩定、可靠、並且維持長時間可持續執行。使用外設晶片的同時,也需要設定外設晶片所處的工作狀態來決定它的功耗特性。

FM17520具備三種功耗型別,同時也允許使用者關閉射頻功能來進一步降低功耗。

【知識點】關於外設晶片的指令集問題。

1)指令集是外設晶片自身獨自決定 ,幾乎每個外設晶片都有它們晶片內部確定了一套指令集。

2)指令集的一般應用:使用某個指令,加上合適的資料,就完成了一次基本的控資料傳輸操作。有時候,指令也可以不加資料,直接使用。具體需要看晶片手冊的指令集介紹

【知識點】電氣引數。本人本次僅站在軟體測試的角度去學習電氣引數。

FM17520的電氣引數,提供我們硬體設計和軟體測試的典型引數,軟體除錯過程中需要利用工具觀察引數,在允許引數波動範圍內即表明軟體控制目的完成,否則重新設定。

(二)關於程式碼:

1)本次使用的是STM8S105作為主控晶片,所以使用ST公司的官方庫。

2)提供關鍵程式碼,以示參考,需要整套程式碼的朋友可以私信。

/*******************************************************************************
** Function name: SPI_SendByte
** Descriptions:     SPI傳送一個位元組
** input parameters: data -> 要傳送的位元組
** output parameters: 無
** Returned value: 無
 ******************************************************************************/
void SPI_SendByte(u8 data)
{
        /* 等待上一次資料傳輸完成,防止覆蓋接受資料 */
while ((SPI->SR & (uint8_t)SPI_FLAG_TXE) == RESET);
SPI->DR =(unsigned char)data;
}
/*******************************************************************************
** Function name:  spi_SetReg
** Descriptions: SPI寫讀卡晶片暫存器函式
** input parameters: ucRegAddr:暫存器地址
**                                  ucRegVal:要寫入的值
** output parameters:無
** Returned value:TRUE
********************************************************************************/
uint8_t spi_SetReg(uint8_t ucRegAddr, uint8_t ucRegVal)
{
    CD_EnNSS();
    
    SPI_SendByte(0x00|(ucRegAddr<<1));/*傳送目標暫存器地址*/
    SPI_SendByte(ucRegVal);/*寫資料*/
    ucRegVal = SPI_ReceiveByte();/*根據晶片手冊說明,此時也需要讓MISO資料線上資料回傳*/
    ucRegVal = SPI_ReceiveByte();/*並且重複一次*/
    
    CD_DisNSS();
    
    return TRUE;
}


相關推薦

讀卡器專案總結FM17520晶片使用

主要學習過程: 1)認識FM17520晶片功能特性、使用方法、介面通訊編寫、暫存器操作等。 2)封裝軟體應用函式,打包成庫檔案,提供應用層呼叫。 3)歸納:外設晶片一般應用方法 (一)關於晶片應用: 【知識點】首先,知道晶片能幹什麼?一般查閱晶片手冊的首頁就有:產品簡介。

商城專案總結

1.關於比較流行的城市聯動外掛,這種基於jQuery的外掛有很多,我也是和大多數人一樣,網上下載一個直接用,可是遇到一個問題,就是對這玩意兒進行表單驗證,這種東西基本都是用span和div標籤模擬出來的,很難去用我熟悉的jQuery.validate.js,這就

java專案部署總結tomcat安裝與配置Native APR 模式

APR是Apache HTTP伺服器的支援庫,提供了一組對映到下層作業系統的API。通過 tomcat-native 庫,使tomcat執行時通過APR更多的呼叫本地API,達到提升效能的目的。而tomcat-native依賴於三個元件:APR, OPEN

Business Intelligence——SSIS專案從建立到部署的簡單總結

在上一篇部落格中,我們成功的把包導進了SQL Server中,那麼接下來我們就為其建立作業,使資料庫能夠自動執行我們的任務。首先,我們需要啟動“SQL Server 代理”。如圖1:圖1在“SQL Server 代理”的子節點中,選中“作業”,右鍵“新建作業”。開啟“新建作業”對話方塊。如圖2:圖2輸入名稱後

iOS開發——完整專案實戰Swift篇&百思不得姐Swift版總結

一、常規主題色使用點 應用在釋出前都會對其主題色進行設定,以統一應用的風格(可能有多套主題)。在主題色設定上有幾個方面,如下: 1.TabBar部分,設定圖片高亮、文字高度顏色2.NavigationBar部分,設定導航欄顏色及字型顏色3.應用標籤等,設定字型的顏色4.應用

Angular6 + Ng-Zorro專案開發總結

搭建通用類 由於之前用的是Abp框架,框架封裝的十分成熟,所以很多時候用起來都是知其然而不知其所以然。比如剛開始還沒有意識到每次請求都傳了token,因為在http方法的呼叫中,並沒有看到它新增header,知道後面看network才知道每次都傳了token,

遠程協助開發總結

控制 amp 為什麽不能 username 開發 col dsc exce nec 遠程協助開發的過程中繼續總結 針對開發總結一的問題,改正了一些地方 1.圖像和命令采用兩個套接字,為什麽不能采用一個套接字?遠程協助是快頻的通信,圖像需要不間斷的從受控端發送到控制端,發送接

.net Kafka.Client多個Consumer Group對Topic消費不能完全覆蓋研究總結

eight 分享 stat .com ima topic consumer 閱讀 padding 依據Partition和Consumer的Rebalance策略,找到Kafka.Client Rebalance代碼塊,還原本地環境,跟蹤調試,發現自定義Consumer G

命令和符號總結

命令2017-05-13隨記—————————————————————————————— 20.uname 顯示系統內核信息 -r 顯示內核版本 -m 32位,64位本文出自 “一個Linux小白-學習運維” 博客,謝絕轉載!命令和符號總結(二)

設計模式總結

靈活性 mil 一個 blog 以及 對象模式 結構型設計模式 con 建模 設計模式可分為三種:創建型設計模式。結構型設計模式和行為型設計模式。 一、創建型設計模式 在設計模式中,創建型設計模式處理對象創建過程的設計模式。它依據實際情況來決定詳細如何創建對象。創建型模

String 經常用法最優算法實現總結

lean ... itl min empty turn system then 實現 1. String getOrderedString(boolean isDuplicated, String … str) 說明: Orders all characters in

ListView優化總結--Android

ride edittext over 變化 業務 適配器 全部 number moved 3.使用Activity和Delegate與適配器交互 這個內容是從書裏看到的,通過托付模式幫助開發人員把全部的業務邏輯從適配器中移到Activity中。以下是加入電話號碼的樣例

工作中能用到的基礎知識總結

protected 構造函數 blog 繼承鏈 附加 調用 初始化 傳統 -s 簡介 繼承、封裝和多態是面向對象編程的重要特性。要想運用好,就必須熟悉這三種特性,本篇說說我對封裝、繼承和多態相關的知識總結。 知識點 一、訪問修飾符 C#中類及

Android4.0設置界面改動總結

idg 手機 中新 pop istview _id 實例 cycle 系統應用 今年1月份的時候。有和大家分享給予Android4.0+系統設置的改動:Android4.0設置界面改動總結 時隔半年。回頭看看那個時候的改動。事實上是有非常多問題的,比方說

css基礎知識的復習總結

文本 pin zoom clear head 導航 設置 mage 之間 文檔流、浮動、清除浮動、overflow、定位 1.文檔流 css文檔流,標準流是什麽? 元素自上而下,自左而右,塊元素獨占一行,行內元素在一行上顯示,碰到父集元素的邊框換行。

freemarker寫select組件報錯總結

popu sts 定義 style runt schedule size template marker 1、錯誤描寫敘述 六月 25, 2014 11:32:49 下午 freemarker.log.JDK14LoggerFactory$JDK14Logge

I/O操做總結

路徑名 con abc 虛擬 參考 () dpa dir isa 文件的操作 這一節我們來討論關於文件自身的操作 不浪費唾沫了,用代碼說話…… 實例1:創建文件對象 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

[轉載] java多線程總結

判斷 home run 選擇 作者 得到 生命周期 on() .com 轉載自:http://www.cnblogs.com/lwbqqyumidi/p/3817517.html 作者:Windstep 四.Java多線程的阻塞狀態與線程控制 上文已經提到Java阻塞的

java基礎總結---關鍵字

-- rem 關鍵字 rgs java err style ret 基礎總結 1.this   在java中, this 對象,它可以在類裏面來引用這個類的屬性和方法。   1.它在方法內部使用,即這個方法所屬的對象的引用。   2.它在構造器內部使用,表示該構造器正在初始

Jsp學習總結

font 返回 dir ica 兩種方法 http 形參 狀態信息 string Jsp腳本中的9大內置對象(都是_jspService()方法中的形參,或者是局部變量): application:對應javax.servlet.ServletContext實例,代表