色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

雙CPU通過普通IO口通信3線雙向零等待通信的詳細概述

Wildesbeast ? 來源:福星電子網 ? 作者:佚名 ? 2019-11-09 11:08 ? 次閱讀

3線雙向零等待IO通訊機制

許多設備需要通過IO通訊交互數據,怎樣才做到速度最快,通訊可靠,所用資源又少呢?

下面介紹一個我編寫的通訊協議:

它沒有1線,2線那樣節省IO資源,但是它的通訊速度絕對最快,無需延時,且不用中斷,還可以

對等傳輸。

實際情況下C51編寫,實現了50us傳輸一個字節,折合160Kbps左右,晶振22M。

特點如下:

使用3根普通IO通訊

不使用中斷

雙方都可以主動發起數據通訊,也都可以被動接收數據,即可以對等傳輸。

有發送和接收的檢查等待機制,發送方知道對方什么時候收了數據,接收方知道發送方什么時

候發了數據。

無需進行數據延時,最大可能地加快了通訊速度。

CPU閑的時候通訊速率可以最快。忙的時候又可以無限等待。保證絕對同步,不會出錯。

雙方CPU工作速度可以任意,即使是51和P4通訊,也能保證正確無誤。

ask w1 w2 w3 w4 w5 w6 w7 w8

MCLK ┐┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌───

└┘ └──┘ └──┘ └──┘ └──┘

SDT ___┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐________

└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘

SCLK ┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌─

└─┘ └──┘ └──┘ └──┘ └──┘

res r1 r2 r3 r4 r5 r6 r7 r8

1.主機發起通訊申請到從機

主機檢測MCLK是否為0,為0的話是對方在申請通訊,退出函數。

主機檢測到MCLK=1,表示通訊空閑。

主機將MCLK=0,表示申請通訊。 之后檢測SCLK是否為0(是否響應通訊)

2.從機響應通訊,從機在閑時檢測MCLK是否為0,發現為0則主機向它發起了通訊申請。

從機將SCLK=0,表示接受申請,之后檢測MCLK是否變為1,如果是1則主機已經發出了第一個bit

的數據。

3.主機發現SCLK=0,知道從機已經開始準備接受數據。

4.主機發送第一個bit到SDA.

5.主機將MCLK=1,表示已經發送第一個bit到SDA.

6.從機發現MCLK=1,知道主機已經發出第一個數據

7.從機收第一個bit的數據。

8.從機將SCLK=1,表示已經收了第一個bit.之后等待MCLK是否變0,如果變0,則主機已經發出

了第二個bit

9.主機發現SCLK=1,知道從機已經開始準備接受第二個數據。

10.主機發送第二個bit到SDA.

11.主機將MCLK=0,表示已經發送第二個bit到SDA.

12.從機發現MCLK=0,知道主機已經發出第二個數據

13.從機收第二個bit的數據。

14.從機將SCLK=0,表示已經收了第二個bit.之后等待MCLK是否變1,如果變1,則主機已經發出

了第三個bit

15.再重復3-14,3遍,傳完8bit數據。

16.主機發現SCLK=0,知道從機已經收完8位數據

17.主機將MCLK=1,準備下一輪通訊

18.從機發現MCLK=1,知道主機已經收起MCLK

19.從機將SCLK=1,準備下一輪通訊

附源代碼:

sbit MCLK=P3^5;

sbit SCLK=P3^6;

sbit SDA=P3^7;

uchar bdata DATA;

sbit BIT0=DATA^0;

sbit BIT7=DATA^7;

// 發送一個數據

putbytespi(uchar ch)

{

uchar i;

uint c;

if(!MCLK)return; //

MCLK=0; //申請通訊

DATA=ch;

for(i=4;i!=0;i--)

{

while(SCLK); //檢測從機響應

SDA=BIT0; //放一個bit到SDA

MCLK=1;

DATA=DATA》》1; //準備下一個bit

while(!SCLK); //檢測從機響應

SDA=BIT0; //放一個bit到SDA

MCLK=0;

DATA=DATA》》1; //準備下一個bit

}

while(SCLK); //檢測從機收完

MCLK=1;

while(!SCLK);//等待從機準備好

SDA=1;

}

//接收一個數據

//調用之前最好檢測MCLK是否為0(對方是否申請數據通訊)再進入,否則里面是死等此信

號!

uchar getbytespi()

{

uchar i;

while(MCLK);

SCLK=0; //接受通訊請求

for(i=4;i!=0;i--)

{

DATA=DATA》》1; //準備收下一個bit

while(!MCLK); //檢測主機放數據

BIT7=SDA;//收一個bit

SCLK=1;

DATA=DATA》》1; //準備收下一個bit

while(MCLK); //檢測主機放數據

BIT7=SDA; //收一個bit

SCLK=0;

}

while(!MCLK); //檢測主機發完

SCLK=1;

return(DATA);

}

責任編輯 LK

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • IO
    IO
    +關注

    關注

    0

    文章

    448

    瀏覽量

    39143
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10858

    瀏覽量

    211652
  • 通信
    +關注

    關注

    18

    文章

    6029

    瀏覽量

    135964
收藏 人收藏

    評論

    相關推薦

    請問有關于STM32普通IO模擬操作SMBus通信的相關實踐經驗嗎?

    求助啊,哪位有關于STM32普通IO模擬操作SMBus通信的相關實踐經驗?分享下,多謝。普通IO
    發表于 10-22 08:43

    AT32F403A 224K RAM 和非等待區關系詳解

    等待區(ZW)使用,96K劃給用戶使用作為RAM使用256K的非等待區里可以通過軟件配置將其中的128K劃出來給用戶作為RAM使用,那么此時用戶就有96+128K RAM可以使用,這
    發表于 11-20 21:25

    普通IO做模擬通信設計的方法

    給從機的目的。(因沒有使用到從機給主機發數據,所以沒有設計)二、使用過程設計在比較熟悉Iic、Spi通信協議,了解時鐘、數據之后,便可以嘗試使用
    發表于 02-09 06:50

    怎樣通過IO端口模擬實現單片機與從設備的SPI通信

    IO模擬SPI根據SPI通信規范,與IO模擬I2C類似,通過
    發表于 02-17 07:19

    CH32V307等待區和非等待區的區別是什么?

    and non-0waiting areas),分為了等待區和非等待區,那么請問:1、這個非等待
    發表于 05-13 06:52

    如何提升非等待區Flash效能

    部分 AT32 帶有非等待區,當代碼超過等待區后,且時鐘不高于 72MHz,讀取Flash 的效能會降低。此時不改變外圍時鐘,如何快速修改程序以提高 Flash 效能?
    發表于 10-20 08:26

    閃存等待(ZW)和非等待(NZW)說明

    閃存等待區(ZW)和非等待區(NZW)有何區別?請說明。
    發表于 10-20 07:01

    如何利用AT32系列MCU存儲器中的等待區(ZW)

    本應用筆記詳細描述了如何利用AT32系列MCU存儲器中的等待區(ZW),實現在擦除或者編程過程中保證CPU重要內容正常運行,免受MCU失速影響。
    發表于 10-24 08:17

    基于RAM的LonWorks智能通信節點設計

    介紹一種基于RAM 的LonWorks 現場總線智能通信節點的設計方法,并給出詳細的設計步驟、硬件及軟件實現。通過此LonWorks 智
    發表于 04-15 10:17 ?23次下載

    基于RAM的CPU并行通信的研究與實現

    本文從現代通信系統的要求出發,詳細研究了利用RAM 來實現CPU 之間高速的并行數據
    發表于 08-26 11:56 ?40次下載

    基于RAM的LonWorks智能通信節點設計

    ?摘要:介紹一種基于RAM的LonWorks現場總線智能通信節點的設計方法,并給出詳細的設計步驟、硬件及軟件實現。通過此LonWor
    發表于 03-24 12:46 ?1269次閱讀
    基于<b class='flag-5'>雙</b><b class='flag-5'>口</b>RAM的LonWorks智能<b class='flag-5'>通信</b>節點設計

    3雙向等待IO通訊機制

    許多設備需要通過IO通訊交互數據,怎樣才做到速度最快,通訊可靠,所用資源又少呢?下面介紹一個我編寫的通訊協議
    發表于 09-28 17:53 ?954次閱讀

    3雙向等待IO通訊機制

    許多設備需要通過IO通訊交互數據,怎樣才做到速度最快,通訊可靠,所用資源又少呢?下面介紹一個我編寫的通訊協議:它沒有1,2那樣節省IO
    發表于 12-21 09:48 ?17次下載
    <b class='flag-5'>3</b><b class='flag-5'>線</b><b class='flag-5'>雙向</b><b class='flag-5'>零</b><b class='flag-5'>等待</b><b class='flag-5'>IO</b>通訊機制

    IO模擬SPI

    IO模擬SPI根據SPI通信規范,與IO模擬I2C類似,通過
    發表于 12-22 19:17 ?20次下載
    <b class='flag-5'>IO</b><b class='flag-5'>口</b>模擬SPI

    關于stm32單片機準雙向IO配置

    我們在開始學習51內核的單片機的時候就知道,p0的引腳都是雙向IO,P1,P2,P3IO
    發表于 12-24 19:19 ?19次下載
    關于stm32單片機準<b class='flag-5'>雙向</b><b class='flag-5'>IO</b><b class='flag-5'>口</b>配置
    主站蜘蛛池模板: 欧美亚洲日本日韩在线| 男女肉大捧进出全过程免费| 97在线免费观看| 无限资源在线完整高清观看1| 久久亚洲国产成人影院| 国产精品高清免费网站| 97se se| 亚洲欧美日韩高清专区| 色 花 堂 永久 网站| 免费人成视频19674不收费| 国产在线精品国自产拍影院午夜 | 成人免费在线观看| 在线观看成人3d动漫入口| 无限好资源免费观看| 日本精品卡一卡2卡3卡四卡三卡| 久久偷拍国2017| 花蝴蝶高清观看免费| 国产精品九九久久精品视| 被强J高H纯肉公交车啊| 999人在线精品播放视频| 在线va无卡无码高清| 亚洲欧美日韩精品自拍 | 99精品免费久久久久久久久日本| 亚洲熟女丰满多毛XXXXX| 小776 论坛| 午夜dj免费中文字幕| 日日噜噜夜夜狠狠视频| 欧美v1deossexo高清| 美女露100%全身无遮挡| 蕾丝边娱乐网| 久久亚洲AV成人无码国产漫画 | 色欲AV精品人妻一二三区| 青青草国产精品| 欧美在线看费视频在线| 年轻老师毛茸茸自由性| 蜜桃视频无码区在线观看| 刘梓晨啪啪啪| 蜜柚视频网在线观看免费| 免费在线伦理片| 欧美成人亚洲高清在线观看| 欧美乱码卡一卡二卡四卡免费|