Silicon C8051F340之GPIO口配置与使用
生活随笔
收集整理的這篇文章主要介紹了
Silicon C8051F340之GPIO口配置与使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、背景:很久前用過C8051,現在有相關需求需要重新使用C8051,然后發現一年前開發的相關經驗都忘得基本上差不多了。連最基本的GPIO口配置還得重新來看手冊,所以有此文,做個記錄,以備下次快速開發。二、正文:首先是GPIO口的配置步驟:1. 用端口輸入方式寄存器(PnMDIN)選擇所有端口引腳的輸入方式(模擬或數字)。2. 用端口輸出方式寄存器(PnMDOUT)選擇所有端口引腳的輸出方式(漏極開路或推挽)。3. 用端口跳過寄存器(PnSKIP)選擇應被交叉開關跳過的那些引腳。4. 將引腳分配給要使用的外設(XBR0、XBR1、XBR2)。5. 使能交叉開關(XBARE = 1)。 先著重說明下,什么是"優先交叉開關譯碼器(Priority Crossbar Decoder)":這玩意兒的這個名稱,我暫時只在Silicon的單片機上見過,也許是因為只有該類型MCU用這種IO口分配機制吧。我們平時使用的MCU,其IIC,UART,SPI等等這些外設接口已經被廠商配置成某個或者某幾個IO上,若是需要要用這些功能,直接將該引腳配置成相應規定好的第二功能即可,若是該IO口引腳不得以被使用,還可以使用重映射功能,將該功能映射到廠商規定的第二個備用IO口。但是Slicon卻不然,它提供的MCU原理圖上,光光的,什么都沒有,也就是說,基本上這些第二功能接口幾乎可被配置在任意一個IO口上。也就是交叉開關會將這些外設功能按照下圖外設功能分配優先級,從高到低分配給
不同的外設引腳,外設功能的優先級如下圖: 從優先權最高的UART0開始,這個被固定配置在"P0.4","P0.5",接著在"XBR0"內,SPI配置為啟用,且P0SKIP的第"0""1""2""3"位未被選擇為跳過,則對應SPI引腳被配置到"P0.0","P0.1","P0.2","P0.3"上;若是SPI配置為禁用,IIC啟用,且P0SKIP的第"0""1"位未被選擇為跳過,則IIC的"SDA","SCL"被配置在"P0.0","P0.1"上。即若是該引腳已經被配置,或者在端口跳過寄存器中被設置,則交叉開關會跳過這些引腳,然后分配到接下來空閑的引腳上,該配置選項即對應于GPIO口配置步驟的3、4、5。Uart口的分配是固定的原因在于下載引導程序內,需要固定此IO口。說到這,那就一步步詳解GPIO口配置步驟吧。"1"步驟:決定引腳輸入模式,要么是模擬輸入,要么是數字輸入,數字輸入為復位后的默認配置。寄存器:"PnMDIN","n"為對應的port口:--> "0",配置為模擬輸入;--> "1",配置為數字輸入。"2"步驟:配置引腳輸出方式:寄存器:"PnMDOUT","n"為對應的port口:--> "0",漏極開路;配合外部上拉電阻,通常用來檢測輸入。--> "1",推挽輸出。"3"步驟:對應的引腳是否被交叉開關分配為第二功能:寄存器:"PnSKIP","n"為對應的port口:--> "0",對應的引腳不被交叉開關跳過;--> "1",對應的引腳被交叉開關跳過。此步驟注意:若是引腳已被規定了特殊的使用,譬如VREF,XTAL1/2等IO口,或者被配置為模擬輸入的引腳,對應位在該寄存器內必須被配置為"1"。"4"步驟:對應外設功能是否被分配到IO口引腳:寄存器:"XBR0","XBR1"為--> "0",不需要分配IO口引腳;--> "1",需要分配IO口引腳。對于給定的XBRn設置,可以使用優先權譯碼表確定I/O引腳分配;另一種方法是使用Silicon Labs IDE 軟件的配置向導功能來確定基于XBRn寄存器設置的端口I/O引腳分配。 "5"步驟使能交叉開關,在使能交叉開關未被打開前,外部引腳保持標準端口I/O方式(輸入)。配置完畢后,未被交叉開關選擇到的IO口,均可當做通用IO口使用,通過對應的端口數據寄存器訪問端口P3-0,這些寄存器既可以按位尋址也可以按字節尋址。端口P4(僅C8051F340/1/4/5)使用的SFR只能按字節尋址。向端口寫入時,數據被鎖存到端口數據寄存器中,以保持引腳上的輸出數據值不變。讀端口數據寄存器將總是返回端口輸入引腳的邏輯狀態,而與XBRn的設置值無關(即使在引腳被交叉開關分配給其它信號時,端口寄存器總是讀其對應的端口I/O引腳)。但在對端口SFR執行下面的讀-修改-寫指令(ANL、ORL、XRL、JBC、CPL、INC、DEC、DJNZ)和對端口SFR中的某一位執行MOV、CLR、SETB期間例外。這些指令讀端口寄存器(而不是引腳)的值,修改后再寫回端口SFR。三、參考文獻詳細解說開漏輸出和推挽輸出http://blog.sina.com.cn/s/blog_14e0394720102vewa.html 至此,記錄完畢。記錄時間:2016-11-25 記錄地點:深圳WZ
不同的外設引腳,外設功能的優先級如下圖: 從優先權最高的UART0開始,這個被固定配置在"P0.4","P0.5",接著在"XBR0"內,SPI配置為啟用,且P0SKIP的第"0""1""2""3"位未被選擇為跳過,則對應SPI引腳被配置到"P0.0","P0.1","P0.2","P0.3"上;若是SPI配置為禁用,IIC啟用,且P0SKIP的第"0""1"位未被選擇為跳過,則IIC的"SDA","SCL"被配置在"P0.0","P0.1"上。即若是該引腳已經被配置,或者在端口跳過寄存器中被設置,則交叉開關會跳過這些引腳,然后分配到接下來空閑的引腳上,該配置選項即對應于GPIO口配置步驟的3、4、5。Uart口的分配是固定的原因在于下載引導程序內,需要固定此IO口。說到這,那就一步步詳解GPIO口配置步驟吧。"1"步驟:決定引腳輸入模式,要么是模擬輸入,要么是數字輸入,數字輸入為復位后的默認配置。寄存器:"PnMDIN","n"為對應的port口:--> "0",配置為模擬輸入;--> "1",配置為數字輸入。"2"步驟:配置引腳輸出方式:寄存器:"PnMDOUT","n"為對應的port口:--> "0",漏極開路;配合外部上拉電阻,通常用來檢測輸入。--> "1",推挽輸出。"3"步驟:對應的引腳是否被交叉開關分配為第二功能:寄存器:"PnSKIP","n"為對應的port口:--> "0",對應的引腳不被交叉開關跳過;--> "1",對應的引腳被交叉開關跳過。此步驟注意:若是引腳已被規定了特殊的使用,譬如VREF,XTAL1/2等IO口,或者被配置為模擬輸入的引腳,對應位在該寄存器內必須被配置為"1"。"4"步驟:對應外設功能是否被分配到IO口引腳:寄存器:"XBR0","XBR1"為--> "0",不需要分配IO口引腳;--> "1",需要分配IO口引腳。對于給定的XBRn設置,可以使用優先權譯碼表確定I/O引腳分配;另一種方法是使用Silicon Labs IDE 軟件的配置向導功能來確定基于XBRn寄存器設置的端口I/O引腳分配。 "5"步驟使能交叉開關,在使能交叉開關未被打開前,外部引腳保持標準端口I/O方式(輸入)。配置完畢后,未被交叉開關選擇到的IO口,均可當做通用IO口使用,通過對應的端口數據寄存器訪問端口P3-0,這些寄存器既可以按位尋址也可以按字節尋址。端口P4(僅C8051F340/1/4/5)使用的SFR只能按字節尋址。向端口寫入時,數據被鎖存到端口數據寄存器中,以保持引腳上的輸出數據值不變。讀端口數據寄存器將總是返回端口輸入引腳的邏輯狀態,而與XBRn的設置值無關(即使在引腳被交叉開關分配給其它信號時,端口寄存器總是讀其對應的端口I/O引腳)。但在對端口SFR執行下面的讀-修改-寫指令(ANL、ORL、XRL、JBC、CPL、INC、DEC、DJNZ)和對端口SFR中的某一位執行MOV、CLR、SETB期間例外。這些指令讀端口寄存器(而不是引腳)的值,修改后再寫回端口SFR。三、參考文獻詳細解說開漏輸出和推挽輸出http://blog.sina.com.cn/s/blog_14e0394720102vewa.html 至此,記錄完畢。記錄時間:2016-11-25 記錄地點:深圳WZ
?
轉載于:https://www.cnblogs.com/ChYQ/p/6101500.html
總結
以上是生活随笔為你收集整理的Silicon C8051F340之GPIO口配置与使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 查看服务器硬件配置信息(cpu/内存)
- 下一篇: 推动Windows的限制:虚拟内存