娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年02月27日(星期四)

正在發生

2018年02月27日 | 單片機數據通信:模擬SPI數據傳輸

發布者:緣到泉 來源: eefocus關鍵字:單片機  數據通信  模擬SPI  數據傳輸 手機看文章 掃描二維碼
隨時隨地手機看文章

    本文是以時鐘芯片DS1302為例子來分析時序圖并寫出代碼。DS1302是采用SPI三線接口與單片機進行同步通信。重點分析單字節讀時序,單字節寫時序,寄存器讀時序,寄存器寫時序,并完成4個函數。完整代碼以及仿真圖下載地址:http://pan.baidu.com/s/1ntM5Kgh

1.gif

 

    上圖為寄存器讀時序,為什么先貼出這個圖呢,因為讀寄存器包含了單字節的寫以及單字節的讀。從圖上可以看出,讀DS1302的寄存器是先寫入一個地址,然后再去讀一個字節。那么就可以根據這個圖來完成單字節的讀寫時序分析以及代碼的編寫。

    單字節寫時序

    圖1可以告訴我們,在時鐘的上升沿是寫入數據,是從低位開始寫入。還有一個需要注意的地方是寫字節和讀字節連接處,從圖中可以看出,當最后一個位寫入后,接下來的一個下降沿就開始讀數據了,在代碼編寫時要注意這一點,不然讀數據就會出錯。先看看下面的代碼:

    void dsWriteByte(u8 dat) //寫入字節

    {

    u8 i;

    for(i = 0;i < 8;i++)

    {

    if(dat & 0x01) ds1302IOStatu(1);

    else ds1302IOStatu(0); //低位先寫入,根據要寫入的數據確定IO的電平

    ds1302CLKStatu(0);

    ds1302CLKStatu(1); //產生上升沿寫入數據

    dat >>= 1; //移位,準備下一位

    }

    } //寫一個字節后,此時時鐘腳是高電平

    單字節讀時序

    同樣是根據圖1可以看出是下降沿讀取數據,低位先被讀取。根據這個信息編寫如下代碼:

    u8 dsReadByte() //讀一個字節

    {

    u8 i,tmp = 0;

    for(i = 0;i < 8;i++)

    {

    ds1302CLKStatu(1);

    tmp >>= 1; //移位

    ds1302CLKStatu(0); //產生下降沿

    if(ds1302_IO) tmp |= 0x80; //讀取一位數據

    }

    return tmp; //返回數據

    }

    寄存器讀時序

    上面完成了單字節讀寫函數,根據圖1來完成讀寄存器的代碼。這時就的控制RST腳了。由時序圖可以看出,寫一個字節和讀一個字節時,RST腳都是高電平狀態,那么根據這些信息就完成如下代碼:

    u8 dsReadReg(u8 addr) //讀寄存器

    {

    u8 tmp;

    ds1302RSTStatu(1); //拉高RST腳之后再完成寫字節和讀字節

    dsWriteByte(addr); //寫地址

    tmp = dsReadByte(); //讀字節

    ds1302RSTStatu(0); //最后拉低RST腳,和圖1的時序相同

    tmp = (tmp >> 4) * 10 + (tmp & 0x0f); //這個是數據類型轉換

    return tmp; //返回數據

    }

    寄存器寫時序

2.gif

    上圖為寄存器寫時序,拉高RST腳后,寫入地址再寫入數據最后拉低RST腳,這樣就完成了寫寄存器操作。完成以下的代碼:

    void dsWriteReg(u8 addr,u8 dat) //寫寄存器

    {

    ds1302RSTStatu(1); //拉高RST腳

    dsWriteByte(addr); //寫入地址

    dsWriteByte(dat); //寫入數據

    ds1302RSTStatu(0); //拉低RST腳

    }

    四個時序到此就分析結束了,再回頭看看編寫的代碼都是依據時序得來的,學會分析時序圖就可以寫出屬于自己的代碼了,同樣可以依據時序圖來檢查代碼的錯誤。了解了這部分的時序分析,推薦大家利用模擬SPI的通信方式編寫xpt2046的讀寫函數。


關鍵字:單片機  數據通信  模擬SPI  數據傳輸 引用地址:單片機數據通信:模擬SPI數據傳輸

上一篇:單片機最小系統與PC機的通信分析
下一篇:Windows CE.NET 4.2中PC與單片機的串行通信

推薦閱讀

在工業機器人領域,人們很容易陷入這樣的思維方式,即認為解決自動化難題所需的硬件和軟件只存在于ABB、FANUC或其他大公司的產品目錄中。事實上,有很多小公司也在利用電機、機械裝置和代碼進行創新,他們也一同推動了工業機器人領域的運轉。CapSen Robotics公司位于賓夕法尼亞州匹茲堡,是一家有著五名工程師的小公司。在首席執行官Jared Glover將他在...
2019年嵌入式系統展會上——新一代汽車技術與市場領導者恩智浦半導體(NXP Semiconductors N.V.)(納斯達克代碼:NXPI)與嵌入式安全和保障領域的全球領導者Green Hills Software宣布締結戰略合作伙伴關系,專注于量產級別的ADAS和自動駕駛應用。通過此次合作,以及Green Hills INTEGRITY?實時操作系統(RTOS)的加入,進一步豐富了恩智浦S32 ADAS和...
高性能嵌入式計算產品的領先供應商德國康佳特為其3.5英寸單板計算機(SBC)推出了三款全新的嵌入式散熱解決方案。這些解決方案符合PICMG的標準化COM Express散熱器規范,采用了超大型尺寸,可為高性能3.5英寸SBC設計提供最大的冷卻質量和表面面積。所有解決方案皆實現了標準化散熱,配備了輕金屬制成的大型散熱器,可迅速高效地排出CPU熱區的余熱。取決...
用蘋果買App會員比安卓貴  上海一用戶起訴蘋果公司獲受理  日前,因不滿買部分App會員比安卓用戶貴,上海一蘋果用戶起訴蘋果公司稱涉嫌壟斷。上海知識產權法院在2021年2月已受理此案。北京青年報記者近日調查發現,不少App在安卓端和蘋果端存在差價,客服也表示的確因為蘋果要收取渠道費用。  上海一用戶起訴蘋果壟斷獲受理  日前,消費...

史海拾趣

問答坊 | AI 解惑

單字節BIN轉BCD一法

這幾天折騰一個AD結果換算成某比值數的問題,終于有了結果,結果存放在一個字節內,不超過0X64(100d). 要將其轉化為2位BCD碼在七段LED上顯示,搜了一些現成程序,發現計算時間消耗較多,于是想用查表法解決。以下是子程序,二進制數存在DATAA1里, ...…

查看全部問答∨

車身控制模塊設計選擇方案

隨著人們對汽車的操控性及舒適性需求不斷升高,汽車車身中的電子設備越來越多,如電動后視鏡、中控門鎖、玻璃升降器、車燈乃至其它更多的高級功能等。     電源要求及方案選擇 (BCM)設計重要 車身控制模塊的一步是確定電源要求,以及選 ...…

查看全部問答∨

視頻子窗體與置頂窗體的沖突問題,急!

步驟如下: 俺先啟動了一個小懸浮窗體,永遠置頂 SetWindowPos(&(wndTopMost),10,10,25,25,SWP_DRAWFRAME); 然后啟動我的視頻程序(MFC對話框) 在OnInitDialog中 1.設定窗體位置 SetWindowPos(NULL, 0, 0, 800, 480, SWP_NOZORDER); 2.創 ...…

查看全部問答∨

請問tornado2.02有long long 這種類型么?

請問tornado2.02有long long 這種類型么? 即8個字節的整形數據? 我在c文件中定義了,對這個8字節整形變量做了除法,編譯可以生成.o,但是鏈接時報錯。 partialImage.o(.text+0x173510): undefined reference to `__divdi3\' partialImage.o(. ...…

查看全部問答∨

《電子設計從零開始》

誰有《電子設計從零開始》Word或txt格式的電子書 各位大哥大姐幫幫忙,要急用啊 拜托了…

查看全部問答∨

汪斌的EVC

請問,有誰知道汪斌老師的EVC高級編程書里邊的實例要怎樣調試運行?他是一個一個的單個函數程序清單啊?!?

查看全部問答∨

請教有關atmel的at91sam7的串口程序問題。

void Usart_init ( void ) {     COM0= AT91C_BASE_US1;     //* Define RXD and TXD as peripheral     // Configure PIO controllers to periph mode      AT91F_PIO_CfgPeriph(   ...…

查看全部問答∨

用什么代碼能開啟pda的無線功能?

用什么代碼能開啟pda的無線功能? wince高手們,小弟現在用的是華碩的626的一款pda,操作系統是windows   mobile6.0,支持無線Wi-Fi; 小弟現有一個問題,我在程序中用什么函數能夠自動啟用無線功能?…

查看全部問答∨

手機芯片行業“廝殺”進入白熱化

向來以聯發科為首的大陸手機芯片市場,進入同業相互廝殺的白熱化階段,聯發科與展訊市占之爭恐在第4季出現大幅改變,近期業界傳出展訊第4季在臺積電取得足夠晶圓代工產能后,投片量大增60%,相較之下,聯發科則降低在臺積電投片量,集中于聯電,近2 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 襄樊市| 木兰县| 桐乡市| 夹江县| 景洪市| 乳源| 井冈山市| 钟山县| 托里县| 巴中市| 潼关县| 澎湖县| 广灵县| 巴林右旗| 金山区| 玛多县| 桃园县| 沙河市| 西宁市| 布尔津县| 吉木乃县| 会宁县| 喀喇沁旗| 视频| 西宁市| 礼泉县| 遂宁市| 开平市| 遂溪县| 杭锦旗| 冀州市| 囊谦县| 淄博市| 嘉荫县| 家居| 米易县| 商城县| 镇赉县| 金昌市| 连江县| 汽车|