<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 關(guān)于使用c8051fxxx單片機(jī)用戶常見疑問如下

          關(guān)于使用c8051fxxx單片機(jī)用戶常見疑問如下

          作者: 時間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
          1. 振蕩器
          問:內(nèi)部時鐘振蕩器是不是不穩(wěn)定?是否可以用于產(chǎn)生波特率的時基?
          答:不同器件的內(nèi)部時鐘振蕩器的精度是不同的(±20%)。隨電源電壓變化,它也將發(fā)生變化(6.5%/V)。但基本不隨溫度變化(<1%溫度變化范圍-40-+85℃)。由于不同器件內(nèi)部振蕩器的離散性較大,所以不能用于產(chǎn)生波特率,應(yīng)該外接標(biāo)準(zhǔn)晶體 (而C8051F300/301內(nèi)部振蕩器精度為±2%,可用于產(chǎn)生波特率) 。
          問:片內(nèi)/外振蕩器如何配置?
          答:正確步驟:
            1. 允許外部振蕩器;
            2. 等待1ms;
            3. 查詢XTLVLD 0->1
            4. 切換到外部振蕩器。
          注意:振蕩器頻率的選擇,即OSCXCN寄存器的配置(外部振蕩器頻率控制位的設(shè)置)。
          匯編和C的部分源代碼如下:
          匯編:
          mov OSCXCN, #67h       ;允許外部振蕩器頻率為 18.432MHz
          clr A              ; 最少等待1ms
          djnz acc, $           ; 等待 ~512us
          djnz acc, $          ; 等待 ~512us
          osc_wait:           ; 查詢 XTLVLD是否為1
          mov a, OSCXCN
          jnb acc.7, osc_wait
          orl OSCICN, #08h       ; 選擇外部振蕩器作為系統(tǒng)時鐘源
          orl OSCXCN, #80h        ; 使能丟失時鐘檢測器
          C語言:
          void SYSCLK_Init (void)
          {
          int i              ; //延時計數(shù)器
          OSCXCN = 0x67         ; //啟動外部振蕩器用 22.1184MHz 晶體
          for (i=0; i < 256; i++)    ; // 最少等待>1ms
          while (!(OSCXCN & 0x80))    ; // 等待晶體穩(wěn)定
          OSCICN = 0x88         ; //選擇外部振蕩器作為系統(tǒng)時鐘源
                           //使能丟失時鐘檢測器
          }
           


          2. 模數(shù)轉(zhuǎn)換
          問:從上電(或退出掉電模式)到ADC穩(wěn)定開始轉(zhuǎn)換需要多長時間?
          答:模擬建立時間也就是等待參考電平穩(wěn)定的時間。它取決于接在VREF引腳的電容容量。此電容越大VREF的噪音就越小,ADC轉(zhuǎn)換結(jié)果的噪音也就越小。如果用4.7uF電容,則穩(wěn)定時間大約為2ms,如果無旁路電容(不推薦),穩(wěn)定時間大約為10us。
          注意:在開始轉(zhuǎn)化之前,需要一個1.5us的跟蹤時間,這也就決定了ADC多路轉(zhuǎn)換開關(guān)(MUX)的切換速度。
          問:ADC的最大VREF電壓:
          答:內(nèi)部參考:2.40±0.03V;
          外部參考:VA+-0.3V。
          問:ADC的最大輸入電壓及輸入阻抗
          答:ADC的最大輸入電壓為VREF。輸入電容為10pF;輸入阻抗等價于一個5kΩ電阻和一個10pF電容的串聯(lián)。
          請參考應(yīng)用筆記AN019"計算開關(guān)電容ADC的建立時間"。
          問:ADC可編程窗口檢測器有什么用途?
          答:ADC可編程窗口檢測器在很多應(yīng)用中非常有用。它不停地將ADC輸出與用戶編程的限制量進(jìn)行比較,并在檢查到越限條件時通知系統(tǒng)控制器。這在中斷驅(qū)動的系統(tǒng)中尤其有效。既可以節(jié)省代碼空間和CPU帶寬又能提供快速響應(yīng)的時間。
          問:C8051F020/F021的內(nèi)部參考如何使用?
          答:F020:如果ADC0、ADC1及DAC都使用內(nèi)部參考,將VREF連接到VREF0、VREF1、VREFD引腳,
             F021:將VREF連到VREFA引腳即可。  
           
          3. 端口
          問:器件IO口的吸收(sink)電流和源(source)電流是多少?
          答:GPIO(通用IO)引腳當(dāng)電壓為0.6V時可以吸收8.5mA的電流。當(dāng)電壓為VDD-0.7V時的源電流為3mA。
          問:在GPIO引腳上的弱上拉的值是多少?
          答:當(dāng)VDD=3.0V時,上拉值大約為100KΩ左右。
          問:Silicon Lab C8051FXXX系列單片機(jī)的IO口與傳統(tǒng)8051單片機(jī)相比有什么區(qū)別?
          答:①Cygnal C8051FXXX系列單片機(jī)的IO口全部為三態(tài)雙向口(而傳統(tǒng)8051單片機(jī)P1、P2、P3口為準(zhǔn)雙向口),內(nèi)部有弱上拉可禁止(傳統(tǒng)8051單片機(jī)固有),可配置為開漏輸出和推挽輸出(傳統(tǒng)8051單片機(jī)只有開漏輸出)。
           ?、谄瑑?nèi)數(shù)字資源要通過數(shù)據(jù)交叉開關(guān)(crossbar)按一定的優(yōu)先級配置到IO引腳(C8051F2XX系列除外,而傳統(tǒng)8051單片機(jī)不具備這一功能)。
          問:Silicon Lab 8051FXXX系列單片機(jī)電源電壓全部為2.7-3.6V,那么是否有與5V系統(tǒng)接口的比較簡單的解決方案?
          答:所有IO口允許5V(極限值為5.8V)輸入,但是輸出為VDD電平。如果與5V系統(tǒng)接口,最簡單的方法是在輸出端加上拉電阻,關(guān)鍵是上拉電阻的選擇。具體參考應(yīng)用筆記AN011"在5V系統(tǒng)中使用C8051FXXX"。
          建議:如果可能,請盡量選用電壓供電兼容的芯片,這是一種最理想的選擇。
          問:模擬引腳能否簡單地用于數(shù)字I/O?
          答:如果模擬引腳是獨立的是不可以的。但是如果模擬引腳和數(shù)字IO是復(fù)用的,是可以通過SFR的設(shè)置來完成配置。
          問:C8051F020/022的p4-p7口和p0-p3口有什么不同?
          答:P0-P3口復(fù)位時為通用口,可通過Crossbar(數(shù)據(jù)交叉開關(guān))寄存器按優(yōu)先級設(shè)置成第二功能。而P4-P7口是通用口,另外P4-P7寄存器不能位尋址。



          關(guān)鍵詞: c8051f單片機(jī)常見疑

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();