IO口狀態切換說明
上傳時間: 2013-10-09
上傳用戶:truth12
1 概述由于在某些通訊設計應用中,需要擴展更多的串口數量,比如車床監控、紡織儀器檢測和網狀連接的數據采集等應用。為此成都國騰微電子有限公司推出的GM814x 可以滿足多個同類產品的并聯擴展,并且能簡單的實現電路連接和程序控制,主MCU 可以識別數據的來源和指定和某個GM814x 通信。2 應用說明2.1 CS 與SPI 的數據通信GM814x 的CS(片選)引腳可用于控制SPI 總線時鐘有效性,CS 低電平有效,內部下拉。CS 有效時,允許芯片的時鐘接收和數據收發;無效時,SCLK、DIN 和DOUT 均為高阻狀態,GM814x 不響應SPI 上的數據收發,但能正常收發子串口數據和產生相應中斷。2.2 應用建議當使用GM814x 的應用需要擴展4 個以上的串口數量時,就需要使用2 片以上的GM814x。擴展的方式也有多種。方式一:將多個GM814x 的SPI 接口接在主MCU 的SPI 總線上,然后將所有GM814x 的中斷進行線與后連接到MCU 的IRQ 上,同時將各GM814x 的IRQ 輸出又連接到MCU的IO,以便MCU響應中斷后檢測是具體哪一個GM814x 輸出的中斷,然后再拉低對應的CS,拉高其它GM814x的CS,并執行通信操作。方式二:如果擴展的GM814x 數量較多,采用上述擴展方式可能會占用MCU較多的IO 資源,則可以將GM814x 的中斷輸出連接到具有OC 輸出的與門芯片上,再輸出到MCU 的中斷輸入。同時又將所有的GM814x 的中斷輸出進行編碼輸入到MCU,以供其判斷產生中斷的是哪一個GM814x。方式三:將所有GM814x 的中斷輸出連接到優先編碼器進行編碼輸出,同時編碼器也能輸出低電平信號給MCU 作為中斷響應。MCU 檢測編碼數據以獲知產生中斷的GM814x,然后進行數據通信處理。這種方式電路最簡單,占用MCU 的IO 資源也最少。 舉例:使用MCS51 單片機擴展8 片GM814x。本電路中,采用了上述提到的第三種擴展方式。通過普通的MCS51 單片機擴展最多8 片GM814x,可擴展最多32 個標準串口。為了節省MCU的IO 資源,電路中增加了一片8-3 線優先編碼器74LS348 和一片3-8 線譯碼器74HC138。8 片GM814x 的IRQ 中斷通過一片74LS348 輸出中斷源向量,同時產生GS 低電平信號到MCS51 的外部中斷0 上,MCS51 響應中斷后,可查詢A0~A2 的值確定產生中斷的GM814x,然后MCU 使能74HC138,輸出對應的ABC 信號選中產生IRQ 信號的GM814x,再進行SPI 總線上的數據通信。 示例程序:本示例程序使用C 語言描述,僅供參考。 由于74LS348 是優先編碼器,多個中斷同時產生的時候,74LS348 的編碼只會指示輸入編號上最高的IRQ,MCU 無法直接獲知是否其它的GM814x 也產生了中斷。同時GM814x 在自己的中斷申請后,數據傳輸到第8bit 時會自動清除,所以數據接收完后如果MCU 的中斷引腳仍然為低,則表示還有其它GM814x 的中斷申請,故必須在處理完當前中斷后繼續查詢新的中斷向量。這就是上述示例程序中while 循環的目的。 以上應用建議僅供設計者參考,不代表最終實現方式,更可靠和實際的實現方式可由設計者根據自己的實際情況確定。l 示例中的數據、參數和標志字命名不代表實際產品的特性,請參考實際產品的數據手冊來獲取你所需要的數據。
上傳時間: 2013-10-26
上傳用戶:suicoe
該電路適合初學者使用,8乘8的LED點陣引腳示意圖及運用。
上傳時間: 2014-12-28
上傳用戶:lxm
畫 USB電路,老是忘記它的引腳排列,每次都要去翻手冊,很麻煩,索性整理了一下,以后用著也方便,這些圖來自 USB 標準上。 以下均為插座或插頭的前視圖,即將插座或插頭面向自己。
上傳時間: 2013-12-24
上傳用戶:旭521
核心板配置 核心板配置癿FPGA芯片是Cyclone II系列癿EP2C8Q208C,具有8256個LEs,36個M4K RAM blocks (4Kbits plus 512 parity bits),同時具有165,888bit癿RAM,支持18個Embedded multipliers和2個PLL,資源配備十分豐富。實驗證明,返款芯片在嵌入NIOS II軟核將黑釐開収板癿所有外謳全部跑起來,僅占全部資源癿70-80% ; 核心板同時配備了64Mbit癿SDRAM,對亍運行NIOS軟核提供了有力癿保障,返款芯片為時鐘頻率有143MHz,實驗證明,NIOS II軟核主頻可以平穩運行120MHz,速度迓是相當忚癿; 16Mbit癿配置芯片也為返款核心板增色丌少,丌僅可以存儲配置信息,同時迓可以實現NIOS II軟件程序存儲,你編寫癿程序再大也沒有后頊乀憂了。 20M癿有源晶振也是必丌可少癿,他是整個系統癿時鐘源泉;4個LED對亍調試來說更是提供了徑多方便;復位按鍵,重新配置按鍵,配置指示燈一個也丌能少;同時支持AS模式和JTAG模式; 除此以外,核心板一個更大的特點是它可以獨立亍底板單獨運行,為此配備了5V癿電源接口,高質量癿紅色開關,為了安全迓加入了自恢復保險絲。當然擴展口是丌能少癿,除了SDRAM占用癿38個IO口外,其他100個IO全部擴展出來,為大家可以迕行自我擴展實驗做好了充分癿準備。 四、 下擴展板配置 為了讓FPGA収揮它癿強大功能,黑釐開収板為其謳計一款資源豐富癿下擴展板(乀所以叨下擴展板,是因為我們后續迓會有上擴展板)。下面我們就來簡單介終一下下擴展板癿資源配置。 支持網絡功能,配置ENC28J60網口芯片。ENC28J60是Microchip Technology(美國微芯科技公司)推出癿28引腳獨立以太網控刢器。目前市場上大部分以太網控刢器癿封裝均赸過80引腳,而符吅IEEE 802.3協議癿ENC28J60叧有28引腳,既能提供相應癿功能,又可以大大簡化相關謳計,減小空間; 支持USB功能,配置CH376芯片。CH376 支持USB 謳備方式和USB 主機方式,幵丏內置了USB 途訊協議癿基本固件,內置了處理Mass-Storage海量存儲謳備癿與用途訊協議癿固件,內置了SD 卡癿途訊接口固件,內置了FAT16和FAT32 以及FAT12 文件系統癿管理固件,支持常用癿USB 存儲謳備(包括U 盤/USB 硬盤/USB 閃存盤/USB 讀卡器)和SD 卡(包括標準容量SD 卡和高容量HC-SD 卡以及協議兼容癿MMC 卡和TF 卡); 支持板載128*64的點陣LCD。ST7565P控刢芯片,內置DC/DC電路,途過軟件調節對比度。該芯片支持,幵口和串口丟種方式;
上傳時間: 2013-11-23
上傳用戶:ouyangtongze
51單片機IO口模擬I2C通信程序包。
上傳時間: 2013-10-20
上傳用戶:a673761058
注:1.這篇文章斷斷續續寫了很久,畫圖技術也不精,難免錯漏,大家湊合看.有問題可以留言. 2.論壇排版把我的代碼縮進全弄沒了,大家將代碼粘貼到arduino編譯器,然后按ctrl+T重新格式化代碼格式即可看的舒服. 一、什么是PWM PWM 即Pulse Wavelength Modulation 脈寬調制波,通過調整輸出信號占空比,從而達到改 變輸出平均電壓的目的。相信Arduino 的PWM 大家都不陌生,在Arduino Duemilanove 2009 中,有6 個8 位精度PWM 引腳,分別是3, 5, 6, 9, 10, 11 腳。我們可以使用analogWrite()控 制PWM 腳輸出頻率大概在500Hz 的左右的PWM 調制波。分辨率8 位即2 的8 次方等于 256 級精度。但是有時候我們會覺得6 個PWM 引腳不夠用。比如我們做一個10 路燈調光, 就需要有10 個PWM 腳。Arduino Duemilanove 2009 有13 個數字輸出腳,如果它們都可以 PWM 的話,就能滿足條件了。于是本文介紹用軟件模擬PWM。 二、Arduino 軟件模擬PWM Arduino PWM 調壓原理:PWM 有好幾種方法。而Arduino 因為電源和實現難度限制,一般 使用周期恒定,占空比變化的單極性PWM。 通過調整一個周期里面輸出腳高/低電平的時間比(即是占空比)去獲得給一個用電器不同 的平均功率。 如圖所示,假設PWM 波形周期1ms(即1kHz),分辨率1000 級。那么需要一個信號時間 精度1ms/1000=1us 的信號源,即1MHz。所以說,PWM 的實現難點在于需要使用很高頻的 信號源,才能獲得快速與高精度。下面先由一個簡單的PWM 程序開始: const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { if((bright++) == 255) bright = 0; for(int i = 0; i < 255; i++) { if(i < bright) { digitalWrite(PWMPin, HIGH); delayMicroseconds(30); } else { digitalWrite(PWMPin, LOW); delayMicroseconds(30); } } } 這是一個軟件PWM 控制Arduino D13 引腳的例子。只需要一塊Arduino 即可測試此代碼。 程序解析:由for 循環可以看出,完成一個PWM 周期,共循環255 次。 假設bright=100 時候,在第0~100 次循環中,i 等于1 到99 均小于bright,于是輸出PWMPin 高電平; 然后第100 到255 次循環里面,i 等于100~255 大于bright,于是輸出PWMPin 低電平。無 論輸出高低電平都保持30us。 那么說,如果bright=100 的話,就有100 次循環是高電平,155 次循環是低電平。 如果忽略指令執行時間的話,這次的PWM 波形占空比為100/255,如果調整bright 的值, 就能改變接在D13 的LED 的亮度。 這里設置了每次for 循環之后,將bright 加一,并且當bright 加到255 時歸0。所以,我們 看到的最終效果就是LED 慢慢變亮,到頂之后然后突然暗回去重新變亮。 這是最基本的PWM 方法,也應該是大家想的比較多的想法。 然后介紹一個簡單一點的。思維風格完全不同。不過對于驅動一個LED 來說,效果與上面 的程序一樣。 const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { digitalWrite(PWMPin, HIGH); delayMicroseconds(bright*30); digitalWrite(PWMPin, LOW); delayMicroseconds((255 - bright)*30); if((bright++) == 255) bright = 0; } 可以看出,這段代碼少了一個For 循環。它先輸出一個高電平,然后維持(bright*30)us。然 后輸出一個低電平,維持時間((255-bright)*30)us。這樣兩次高低就能完成一個PWM 周期。 分辨率也是255。 三、多引腳PWM Arduino 本身已有PWM 引腳并且運行起來不占CPU 時間,所以軟件模擬一個引腳的PWM 完全沒有實用意義。我們軟件模擬的價值在于:他能將任意的數字IO 口變成PWM 引腳。 當一片Arduino 要同時控制多個PWM,并且沒有其他重任務的時候,就要用軟件PWM 了。 多引腳PWM 有一種下面的方式: int brights[14] = {0}; //定義14個引腳的初始亮度,可以隨意設置 int StartPWMPin = 0, EndPWMPin = 13; //設置D0~D13為PWM 引腳 int PWMResolution = 255; //設置PWM 占空比分辨率 void setup() { //定義所有IO 端輸出 for(int i = StartPWMPin; i <= EndPWMPin; i++) { pinMode(i, OUTPUT); //隨便定義個初始亮度,便于觀察 brights[ i ] = random(0, 255); } } void loop() { //這for 循環是為14盞燈做漸亮的。每次Arduino loop()循環, //brights 自增一次。直到brights=255時候,將brights 置零重新計數。 for(int i = StartPWMPin; i <= EndPWMPin; i++) { if((brights[i]++) == PWMResolution) brights[i] = 0; } for(int i = 0; i <= PWMResolution; i++) //i 是計數一個PWM 周期 { for(int j = StartPWMPin; j <= EndPWMPin; j++) //每個PWM 周期均遍歷所有引腳 { if(i < brights[j])\ 所以我們要更改PWM 周期的話,我們將精度(代碼里面的變量:PWMResolution)降低就行,比如一般調整LED 亮度的話,我們用64 級精度就行。這樣速度就是2x32x64=4ms。就不會閃了。
上傳時間: 2013-10-08
上傳用戶:dingdingcandy
PADS元件引腳定義
上傳時間: 2013-11-08
上傳用戶:bnfm
本文探討的重點是PCB設計人員利用IP,并進一步采用拓撲規劃和布線工具來支持IP,快速完成整個PCB設計。從圖1可以看出,設計工程師的職責是通過布局少量必要元件、并在這些元件之間規劃關鍵互連路徑來獲取IP。一旦獲取到了IP,就可將這些IP信息提供給PCB設計人員,由他們完成剩余的設計。 圖1:設計工程師獲取IP,PCB設計人員進一步采用拓撲規劃和布線工具支持IP,快速完成整個PCB設計。現在無需再通過設計工程師和PCB設計人員之間的交互和反復過程來獲取正確的設計意圖,設計工程師已經獲取這些信息,并且結果相當精確,這對PCB設計人員來說幫助很大。在很多設計中,設計工程師和PCB設計人員要進行交互式布局和布線,這會消耗雙方許多寶貴的時間。從以往的經歷來看交互操作是必要的,但很耗時間,且效率低下。設計工程師提供的最初規劃可能只是一個手工繪圖,沒有適當比例的元件、總線寬度或引腳輸出提示。隨著PCB設計人員參與到設計中來,雖然采用拓撲規劃技術的工程師可以獲取某些元件的布局和互連,不過,這個設計可能還需要布局其它元件、獲取其它IO及總線結構和所有互連才能完成。PCB設計人員需要采用拓撲規劃,并與經過布局的和尚未布局的元件進行交互,這樣做可以形成最佳的布局和交互規劃,從而提高PCB設計效率。隨著關鍵區域和高密區域布局完成及拓撲規劃被獲取,布局可能先于最終拓撲規劃完成。因此,一些拓撲路徑可能必須與現有布局一起工作。雖然它們的優先級較低,但仍需要進行連接。因而一部分規劃圍繞布局后的元件產生了。此外,這一級規劃可能需要更多細節來為其它信號提供必要的優先級。
上傳時間: 2014-01-14
上傳用戶:lz4v4
半導體的產品很多,應用的場合非常廣泛,圖一是常見的幾種半導體元件外型。半導體元件一般是以接腳形式或外型來劃分類別,圖一中不同類別的英文縮寫名稱原文為 PDID:Plastic Dual Inline Package SOP:Small Outline Package SOJ:Small Outline J-Lead Package PLCC:Plastic Leaded Chip Carrier QFP:Quad Flat Package PGA:Pin Grid Array BGA:Ball Grid Array 雖然半導體元件的外型種類很多,在電路板上常用的組裝方式有二種,一種是插入電路板的銲孔或腳座,如PDIP、PGA,另一種是貼附在電路板表面的銲墊上,如SOP、SOJ、PLCC、QFP、BGA。 從半導體元件的外觀,只看到從包覆的膠體或陶瓷中伸出的接腳,而半導體元件真正的的核心,是包覆在膠體或陶瓷內一片非常小的晶片,透過伸出的接腳與外部做資訊傳輸。圖二是一片EPROM元件,從上方的玻璃窗可看到內部的晶片,圖三是以顯微鏡將內部的晶片放大,可以看到晶片以多條銲線連接四周的接腳,這些接腳向外延伸並穿出膠體,成為晶片與外界通訊的道路。請注意圖三中有一條銲線從中斷裂,那是使用不當引發過電流而燒毀,致使晶片失去功能,這也是一般晶片遭到損毀而失效的原因之一。 圖四是常見的LED,也就是發光二極體,其內部也是一顆晶片,圖五是以顯微鏡正視LED的頂端,可從透明的膠體中隱約的看到一片方型的晶片及一條金色的銲線,若以LED二支接腳的極性來做分別,晶片是貼附在負極的腳上,經由銲線連接正極的腳。當LED通過正向電流時,晶片會發光而使LED發亮,如圖六所示。 半導體元件的製作分成兩段的製造程序,前一段是先製造元件的核心─晶片,稱為晶圓製造;後一段是將晶中片加以封裝成最後產品,稱為IC封裝製程,又可細分成晶圓切割、黏晶、銲線、封膠、印字、剪切成型等加工步驟,在本章節中將簡介這兩段的製造程序。
上傳時間: 2013-11-04
上傳用戶:372825274