一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如果芯片不具有硬件I2C模塊怎么辦?

GReq_mcu168 ? 來(lái)源:互聯(lián)網(wǎng) ? 作者:佚名 ? 2017-10-30 15:59 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

關(guān)于Bit Bang 的解釋:Use software to control serial communication at general-purpose I/O pins,簡(jiǎn)單來(lái)講就是使用軟件通過 IO 腳去實(shí)現(xiàn) I2C 的時(shí)序從而使用 I2C 協(xié)議進(jìn)行通信。

這樣做的好處是可以突破硬件上的限制,例如芯片不具有硬件 I2C 模塊,或者硬件 I2C 模塊損壞,又或者使用硬件 I2C 模塊時(shí)布線非常麻煩。壞處是需要寫代碼模擬時(shí)序,根據(jù)不同的硬件平臺(tái)和不同的時(shí)鐘頻率,代碼中的部分參數(shù)是不一樣的。

二、代碼分析

以下代碼基于 STM32 系列 MCU

使用軟件模擬 I2C 的步驟如下:

1、設(shè)置 GPIO 管腳

設(shè)置兩個(gè)管腳作為 SCL 和 SDA,例如 GPIOA1 和 GPIOA2

2、SCL時(shí)鐘周期

3、附加設(shè)置

這里主要是使用宏定義模擬函數(shù)

4、I2C 啟動(dòng)

5、I2C停止

6、發(fā)送 8 位數(shù)據(jù),返回值為從響應(yīng) ACK 標(biāo)志

7、接收 8 位數(shù)據(jù)

三、操作實(shí)例

以下代碼為通過調(diào)用上面的基本代碼來(lái)實(shí)現(xiàn) I2C 通信

1、設(shè)置 DAC 寄存器的值

三個(gè)參數(shù)分比為從機(jī)地址,寄存器地址,8 位數(shù)據(jù)

2、讀取 DAC 寄存器的值

兩個(gè)參數(shù)分別為從機(jī)地址,寄存器地址,返回?cái)?shù)據(jù)為 16 位。這是由于某些器件的硬件設(shè)計(jì),采用 7 位表示寄存器地址,而每個(gè)寄存器包含 9 位數(shù)據(jù)。更常見的方式為 8 位寄存器地址,一個(gè)寄存器 8 位數(shù)據(jù),這種方式的代碼僅返回 8 位數(shù)據(jù),見代碼 2。

代碼 1,返回 16 位數(shù)據(jù),不常見

代碼 2,返回 8 位數(shù)據(jù)

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:學(xué)會(huì)這個(gè)技術(shù),再也不怕芯片不具有硬件I2C模塊了!

文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    I2C總線的基本用法 I2C總線硬件問題匯總

    一般情況下, i2c 設(shè)備焊接沒什么問題,按照設(shè)備手冊(cè)一步步來(lái),基本上就順風(fēng)順?biāo)軌蛴闷饋?lái)。如果這么一個(gè)簡(jiǎn)單的東西,有時(shí)候想要的結(jié)果死活不出來(lái),反復(fù)的檢查問題的原因,查詢解決辦法,核查設(shè)備的數(shù)據(jù)手冊(cè),甚至發(fā)送和接收的每一條命令與數(shù)據(jù)都知道是什么意思,仍然無(wú)法解決問題,那該
    的頭像 發(fā)表于 12-26 09:33 ?1932次閱讀
    <b class='flag-5'>I2C</b>總線的基本用法 <b class='flag-5'>I2C</b>總線<b class='flag-5'>硬件</b>問題匯總

    基于I2C總線的鍵盤顯示模塊設(shè)計(jì)

    介紹了利用P87LPC76X系列單片機(jī)設(shè)計(jì)的一個(gè)鍵盤顯示模塊,通過I2C總線與主控芯片相連,具有靈活、控制方便等特點(diǎn)。文中給出了部分硬件設(shè)計(jì)
    發(fā)表于 08-05 14:43 ?24次下載

    模擬I2C總線多主節(jié)點(diǎn)通信原理及實(shí)現(xiàn)方法

    摘要 介紹模擬I2C總線的多主節(jié)點(diǎn)通信原理,并提出一種新的實(shí)現(xiàn)方法。這種采用延時(shí)接收比較來(lái)實(shí)現(xiàn)仲裁的方法,可使不具有I2C接口的普通微控制器(MCU)能夠?qū)崿F(xiàn)模擬I2C總線的多
    發(fā)表于 06-18 17:57 ?5704次閱讀
    模擬<b class='flag-5'>I2C</b>總線多主節(jié)點(diǎn)通信原理及實(shí)現(xiàn)方法

    基于CPLD的I2C總線接口設(shè)計(jì)

    在電路設(shè)計(jì)中,I2C總線是比較常用的兩線式串行通信方式,大多數(shù)的CPU都擅長(zhǎng)于并口操作,不具備直接操作I2C總線接口的能力。為了使不具I2C
    發(fā)表于 02-12 16:11 ?95次下載
    基于CPLD的<b class='flag-5'>I2C</b>總線接口設(shè)計(jì)

    STM32硬件I2C例程

    STM32硬件I2C例程,感興趣的小伙伴們可以看看。
    發(fā)表于 07-26 10:26 ?94次下載

    Arduino教程之I2C模塊使用教程資料免費(fèi)下載

    為什么叫I2C模塊?和一元硬幣差不多大小的一塊PCB上放了三個(gè)芯片,分管三個(gè)功能:時(shí)間計(jì)算、溫度偵測(cè)、數(shù)據(jù)存儲(chǔ)。這三個(gè)芯片都是通過I2C總線
    發(fā)表于 01-22 16:59 ?9次下載
    Arduino教程之<b class='flag-5'>I2C</b><b class='flag-5'>模塊</b>使用教程資料免費(fèi)下載

    AT89S52單片機(jī)并行端口模擬I2C總線協(xié)議讀寫AT24C04的設(shè)計(jì)

    AT24C04是具有I2C總線接口的EEPROM.大小為512*8bit.單片機(jī)AT89S52本身不具有I2C總線結(jié)口,所以可編寫程序用并行
    發(fā)表于 08-14 14:34 ?2972次閱讀

    I2C總線設(shè)備的使用方法和硬件問題合集

    ,甚至發(fā)送和接收的每一條命令與數(shù)據(jù)都知道是什么意思,仍然無(wú)法解決問題,那該怎么辦呢?本文主要針對(duì) i2c 設(shè)備,講解如何解決 i2c 設(shè)備主機(jī)與從機(jī)直接無(wú)法正常數(shù)據(jù)交互的問題,側(cè)重點(diǎn)是針對(duì)硬件
    發(fā)表于 11-25 11:35 ?7次下載
    <b class='flag-5'>I2C</b>總線設(shè)備的使用方法和<b class='flag-5'>硬件</b>問題合集

    8位PIC單片機(jī)上具有硬件協(xié)議加速功能的I2C通信

    本技術(shù)簡(jiǎn)介討論了I2C模塊及其特性和基本功能。圖1給出了I2C模塊的簡(jiǎn)化框圖。
    發(fā)表于 04-01 14:20 ?6次下載
    8位PIC單片機(jī)上<b class='flag-5'>具有</b><b class='flag-5'>硬件</b>協(xié)議加速功能的<b class='flag-5'>I2C</b>通信

    I2C”的那些坑

    ,核查設(shè)備的數(shù)據(jù)手冊(cè),甚至發(fā)送和接收的每一條命令與數(shù)據(jù)都知道是什么意思,仍然無(wú)法解決問題,那該怎么辦呢? 本文主要針對(duì) i2c 設(shè)備,講解如何解決 i2c 設(shè)備主機(jī)與從機(jī)直接無(wú)法正常數(shù)據(jù)交互
    發(fā)表于 11-06 10:05 ?8次下載
    “<b class='flag-5'>I2C</b>”的那些坑

    STM32的硬件I2C有BUG嗎?

    坊間一直流傳著一個(gè)傳說~STM32的硬件I2C設(shè)計(jì)有BUG,最好不要用,用軟件I2C比較靠譜。長(zhǎng)久以來(lái),為了不必要的麻煩,我也一直沒有用過硬件I2C
    發(fā)表于 12-04 14:51 ?26次下載
    STM32的<b class='flag-5'>硬件</b><b class='flag-5'>I2C</b>有BUG嗎?

    硬件I2C與模擬I2C

    硬件I2C對(duì)應(yīng)芯片上的I2C外設(shè),有相應(yīng)I2C驅(qū)動(dòng)電路,其所使用的I2C管腳也是專用的,因而效率
    發(fā)表于 12-28 19:14 ?81次下載
    <b class='flag-5'>硬件</b><b class='flag-5'>I2C</b>與模擬<b class='flag-5'>I2C</b>

    STM32F 單片機(jī)硬件I2C Busy標(biāo)志導(dǎo)致的I2C卡死的處理辦法

    STM32F 單片機(jī)硬件I2C Busy標(biāo)志導(dǎo)致的I2C卡死的處理辦法在調(diào)試多用戶表的時(shí)候,發(fā)現(xiàn)如果人為短接I2C的SDA或SLK腳后,
    發(fā)表于 12-28 19:24 ?26次下載
    STM32F 單片機(jī)<b class='flag-5'>硬件</b><b class='flag-5'>I2C</b> Busy標(biāo)志導(dǎo)致的<b class='flag-5'>I2C</b>卡死的處理辦法

    I2C通信沒反應(yīng)怎么辦?

    硬件我們經(jīng)常會(huì)遇到各種各樣的問題,一些通信接口也會(huì)出現(xiàn),I2C自然也不例外。假如遇到I2C沒反應(yīng),那么可能會(huì)出現(xiàn)這種情況:“軟件工程師說,我軟件都已經(jīng)配好了,但是就是讀寫不到數(shù)據(jù),是不是硬件
    的頭像 發(fā)表于 05-04 11:30 ?4064次閱讀
    <b class='flag-5'>I2C</b>通信沒反應(yīng)<b class='flag-5'>怎么辦</b>?

    I2C接口進(jìn)入Busy狀態(tài)不能退出怎么辦

    電子發(fā)燒友網(wǎng)站提供《I2C接口進(jìn)入Busy狀態(tài)不能退出怎么辦.pdf》資料免費(fèi)下載
    發(fā)表于 08-02 10:03 ?3次下載
    <b class='flag-5'>I2C</b>接口進(jìn)入Busy狀態(tài)不能退出<b class='flag-5'>怎么辦</b>