chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

雙CPU通過(guò)普通IO口通信3線(xiàn)雙向零等待通信的詳細(xì)概述

Wildesbeast ? 來(lái)源:福星電子網(wǎng) ? 作者:佚名 ? 2019-11-09 11:08 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

3線(xiàn)雙向零等待IO通訊機(jī)制

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

下面介紹一個(gè)我編寫(xiě)的通訊協(xié)議:

它沒(méi)有1線(xiàn),2線(xiàn)那樣節(jié)省IO資源,但是它的通訊速度絕對(duì)最快,無(wú)需延時(shí),且不用中斷,還可以

對(duì)等傳輸。

實(shí)際情況下C51編寫(xiě),實(shí)現(xiàn)了50us傳輸一個(gè)字節(jié),折合160Kbps左右,晶振22M。

特點(diǎn)如下:

使用3根普通IO通訊

不使用中斷

雙方都可以主動(dòng)發(fā)起數(shù)據(jù)通訊,也都可以被動(dòng)接收數(shù)據(jù),即可以對(duì)等傳輸。

有發(fā)送和接收的檢查等待機(jī)制,發(fā)送方知道對(duì)方什么時(shí)候收了數(shù)據(jù),接收方知道發(fā)送方什么時(shí)

候發(fā)了數(shù)據(jù)。

無(wú)需進(jìn)行數(shù)據(jù)延時(shí),最大可能地加快了通訊速度。

CPU閑的時(shí)候通訊速率可以最快。忙的時(shí)候又可以無(wú)限等待。保證絕對(duì)同步,不會(huì)出錯(cuò)。

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

ask w1 w2 w3 w4 w5 w6 w7 w8

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

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

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

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

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

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

res r1 r2 r3 r4 r5 r6 r7 r8

1.主機(jī)發(fā)起通訊申請(qǐng)到從機(jī)

主機(jī)檢測(cè)MCLK是否為0,為0的話(huà)是對(duì)方在申請(qǐng)通訊,退出函數(shù)。

主機(jī)檢測(cè)到MCLK=1,表示通訊空閑。

主機(jī)將MCLK=0,表示申請(qǐng)通訊。 之后檢測(cè)SCLK是否為0(是否響應(yīng)通訊)

2.從機(jī)響應(yīng)通訊,從機(jī)在閑時(shí)檢測(cè)MCLK是否為0,發(fā)現(xiàn)為0則主機(jī)向它發(fā)起了通訊申請(qǐng)。

從機(jī)將SCLK=0,表示接受申請(qǐng),之后檢測(cè)MCLK是否變?yōu)?,如果是1則主機(jī)已經(jīng)發(fā)出了第一個(gè)bit

的數(shù)據(jù)。

3.主機(jī)發(fā)現(xiàn)SCLK=0,知道從機(jī)已經(jīng)開(kāi)始準(zhǔn)備接受數(shù)據(jù)。

4.主機(jī)發(fā)送第一個(gè)bit到SDA.

5.主機(jī)將MCLK=1,表示已經(jīng)發(fā)送第一個(gè)bit到SDA.

6.從機(jī)發(fā)現(xiàn)MCLK=1,知道主機(jī)已經(jīng)發(fā)出第一個(gè)數(shù)據(jù)

7.從機(jī)收第一個(gè)bit的數(shù)據(jù)。

8.從機(jī)將SCLK=1,表示已經(jīng)收了第一個(gè)bit.之后等待MCLK是否變0,如果變0,則主機(jī)已經(jīng)發(fā)出

了第二個(gè)bit

9.主機(jī)發(fā)現(xiàn)SCLK=1,知道從機(jī)已經(jīng)開(kāi)始準(zhǔn)備接受第二個(gè)數(shù)據(jù)。

10.主機(jī)發(fā)送第二個(gè)bit到SDA.

11.主機(jī)將MCLK=0,表示已經(jīng)發(fā)送第二個(gè)bit到SDA.

12.從機(jī)發(fā)現(xiàn)MCLK=0,知道主機(jī)已經(jīng)發(fā)出第二個(gè)數(shù)據(jù)

13.從機(jī)收第二個(gè)bit的數(shù)據(jù)。

14.從機(jī)將SCLK=0,表示已經(jīng)收了第二個(gè)bit.之后等待MCLK是否變1,如果變1,則主機(jī)已經(jīng)發(fā)出

了第三個(gè)bit

15.再重復(fù)3-14,3遍,傳完8bit數(shù)據(jù)。

16.主機(jī)發(fā)現(xiàn)SCLK=0,知道從機(jī)已經(jīng)收完8位數(shù)據(jù)

17.主機(jī)將MCLK=1,準(zhǔn)備下一輪通訊

18.從機(jī)發(fā)現(xiàn)MCLK=1,知道主機(jī)已經(jīng)收起MCLK

19.從機(jī)將SCLK=1,準(zhǔn)備下一輪通訊

附源代碼:

sbit MCLK=P3^5;

sbit SCLK=P3^6;

sbit SDA=P3^7;

uchar bdata DATA;

sbit BIT0=DATA^0;

sbit BIT7=DATA^7;

// 發(fā)送一個(gè)數(shù)據(jù)

putbytespi(uchar ch)

{

uchar i;

uint c;

if(!MCLK)return; //

MCLK=0; //申請(qǐng)通訊

DATA=ch;

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

{

while(SCLK); //檢測(cè)從機(jī)響應(yīng)

SDA=BIT0; //放一個(gè)bit到SDA

MCLK=1;

DATA=DATA》》1; //準(zhǔn)備下一個(gè)bit

while(!SCLK); //檢測(cè)從機(jī)響應(yīng)

SDA=BIT0; //放一個(gè)bit到SDA

MCLK=0;

DATA=DATA》》1; //準(zhǔn)備下一個(gè)bit

}

while(SCLK); //檢測(cè)從機(jī)收完

MCLK=1;

while(!SCLK);//等待從機(jī)準(zhǔn)備好

SDA=1;

}

//接收一個(gè)數(shù)據(jù)

//調(diào)用之前最好檢測(cè)MCLK是否為0(對(duì)方是否申請(qǐng)數(shù)據(jù)通訊)再進(jìn)入,否則里面是死等此信

號(hào)!

uchar getbytespi()

{

uchar i;

while(MCLK);

SCLK=0; //接受通訊請(qǐng)求

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

{

DATA=DATA》》1; //準(zhǔn)備收下一個(gè)bit

while(!MCLK); //檢測(cè)主機(jī)放數(shù)據(jù)

BIT7=SDA;//收一個(gè)bit

SCLK=1;

DATA=DATA》》1; //準(zhǔn)備收下一個(gè)bit

while(MCLK); //檢測(cè)主機(jī)放數(shù)據(jù)

BIT7=SDA; //收一個(gè)bit

SCLK=0;

}

while(!MCLK); //檢測(cè)主機(jī)發(fā)完

SCLK=1;

return(DATA);

}

責(zé)任編輯 LK

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

    關(guān)注

    0

    文章

    500

    瀏覽量

    41401
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11187

    瀏覽量

    221270
  • 通信
    +關(guān)注

    關(guān)注

    18

    文章

    6261

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    請(qǐng)問(wèn)有關(guān)于STM32普通IO模擬操作SMBus通信的相關(guān)實(shí)踐經(jīng)驗(yàn)嗎?

    求助啊,哪位有關(guān)于STM32普通IO模擬操作SMBus通信的相關(guān)實(shí)踐經(jīng)驗(yàn)?分享下,多謝。普通IO
    發(fā)表于 10-22 08:43

    AT32F403A 224K RAM 和非等待區(qū)關(guān)系詳解

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

    普通IO做模擬通信設(shè)計(jì)的方法

    給從機(jī)的目的。(因沒(méi)有使用到從機(jī)給主機(jī)發(fā)數(shù)據(jù),所以沒(méi)有設(shè)計(jì))二、使用過(guò)程設(shè)計(jì)在比較熟悉Iic、Spi通信協(xié)議,了解時(shí)鐘、數(shù)據(jù)線(xiàn)之后,便可以嘗試使用
    發(fā)表于 02-09 06:50

    怎樣通過(guò)IO端口模擬實(shí)現(xiàn)單片機(jī)與從設(shè)備的SPI通信

    IO模擬SPI根據(jù)SPI通信規(guī)范,與IO模擬I2C類(lèi)似,通過(guò)
    發(fā)表于 02-17 07:19

    CH32V307等待區(qū)和非等待區(qū)的區(qū)別是什么?

    and non-0waiting areas),分為了等待區(qū)和非等待區(qū),那么請(qǐng)問(wèn):1、這個(gè)非等待
    發(fā)表于 05-13 06:52

    如何提升非等待區(qū)Flash效能

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

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

    閃存等待區(qū)(ZW)和非等待區(qū)(NZW)有何區(qū)別?請(qǐng)說(shuō)明。
    發(fā)表于 10-20 07:01

    擦除FLASH等待區(qū)期間需注意事項(xiàng)

    擦除FLASH等待區(qū)期間需注意事項(xiàng)有等待區(qū)的MCU 系列,在擦除等待區(qū)時(shí)需注意事項(xiàng)?
    發(fā)表于 10-23 07:36

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

    本應(yīng)用筆記詳細(xì)描述了如何利用AT32系列MCU存儲(chǔ)器中的等待區(qū)(ZW),實(shí)現(xiàn)在擦除或者編程過(guò)程中保證CPU重要內(nèi)容正常運(yùn)行,免受MCU失速影響。
    發(fā)表于 10-24 08:17

    基于RAM的LonWorks智能通信節(jié)點(diǎn)設(shè)計(jì)

    介紹一種基于RAM 的LonWorks 現(xiàn)場(chǎng)總線(xiàn)智能通信節(jié)點(diǎn)的設(shè)計(jì)方法,并給出詳細(xì)的設(shè)計(jì)步驟、硬件及軟件實(shí)現(xiàn)。通過(guò)此LonWorks 智
    發(fā)表于 04-15 10:17 ?23次下載

    基于RAM的CPU并行通信的研究與實(shí)現(xiàn)

    本文從現(xiàn)代通信系統(tǒng)的要求出發(fā),詳細(xì)研究了利用RAM 來(lái)實(shí)現(xiàn)CPU 之間高速的并行數(shù)據(jù)
    發(fā)表于 08-26 11:56 ?40次下載

    3線(xiàn)雙向等待IO通訊機(jī)制

    許多設(shè)備需要通過(guò)IO通訊交互數(shù)據(jù),怎樣才做到速度最快,通訊可靠,所用資源又少呢?下面介紹一個(gè)我編寫(xiě)的通訊協(xié)議
    發(fā)表于 09-28 17:53 ?1102次閱讀

    3線(xiàn)雙向等待IO通訊機(jī)制

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

    IO模擬SPI

    IO模擬SPI根據(jù)SPI通信規(guī)范,與IO模擬I2C類(lèi)似,通過(guò)
    發(fā)表于 12-22 19:17 ?23次下載
    <b class='flag-5'>IO</b><b class='flag-5'>口</b>模擬SPI

    關(guān)于stm32單片機(jī)準(zhǔn)雙向IO配置

    我們?cè)陂_(kāi)始學(xué)習(xí)51內(nèi)核的單片機(jī)的時(shí)候就知道,p0的引腳都是雙向IO,P1,P2,P3IO
    發(fā)表于 12-24 19:19 ?19次下載
    關(guān)于stm32單片機(jī)準(zhǔn)<b class='flag-5'>雙向</b><b class='flag-5'>IO</b><b class='flag-5'>口</b>配置