欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2643|回復: 6
收起左側

SPI讀數據函數怎樣理解

[復制鏈接]
ID:493146 發表于 2021-1-31 23:26 | 顯示全部樓層 |閱讀模式
本帖最后由 zcwjzwd 于 2021-1-31 23:27 編輯

uchar SPI_Read(uchar reg)
{
        uchar reg_val;
        
        CSN = 0;                // CSN low, initialize SPI communication...
        SPI_RW(reg);            // Select register to read from..
        reg_val = SPI_RW(0);    // ..then read register value
        CSN = 1;                // CSN high, terminate SPI communication
        
        return(reg_val);        // return register value
}
reg_val是返回的狀態寄存器的值還是其他的值?如果sta=SPI_Read(STATUS);//STATUS為狀態寄存器地址。
sta的值有事什么?是返回的狀態寄存器的值還是其他的值?


回復

使用道具 舉報

ID:752974 發表于 2021-2-1 08:16 | 顯示全部樓層
從哪個寄存器地址讀出的數據就是那個寄存器的,這沒什么懷疑的吧。
回復

使用道具 舉報

ID:592807 發表于 2021-2-1 08:23 | 顯示全部樓層
寄存器的值,舉個例子(這里僅僅是舉例子,不涉及任何單片機)
比如一個GPIO口的寄存器(8位)
第1位如果值是1則代表PA^0輸出1,反之則輸出0
第2位如果值是1則代表PA^1輸出1,反之則輸出0
第3位如果值是1則代表PA^2輸出1,反之則輸出0
........................
如果PA^0~PA^7輸出全是1,那么你用這個函數之后返回值reg_val = 0xff


如果你想要的查看PA^5的輸出值(或者說狀態status),那么就要自己轉換 out5 = reg_val & (0x01 << 4)
回復

使用道具 舉報

ID:226055 發表于 2021-2-1 11:54 | 顯示全部樓層
    1、從你的問題描述來看,你的疑惑不是SPI通信總線。SPI通信是可以模擬SPI和硬件SPI兩種方式進行。
    2、不管是硬件SPI還是模擬SPI,你需要知道SPI通信是回環結構,我也是通過艾克姆科技的文檔描述搞得比較清楚的。所以,SPI讀一個字節的時候必寫一個字節才可。
寄存器3.jpg



    3、你的疑惑點應該是在你需要操作的SPI的對象上,屬于應用層次的。這需要看你操作的對象的技術手冊,你分析的狀態寄存器返回的是狀態值,沒有問題,手冊上肯定也是這樣說的。但至于你寫0x00,收到的是什么,這個必須去看操作對象的手冊,比如你操作的是一個SPI接口的存儲器,則你必須去看這個存儲器的芯片手冊,這是廠家定義的,和SPI沒有關系。




回復

使用道具 舉報

ID:875789 發表于 2021-2-1 16:09 | 顯示全部樓層
返回寄存器中的值
回復

使用道具 舉報

ID:288629 發表于 2021-2-1 16:11 | 顯示全部樓層
讀,寫數據最重要的是時序正確就問題不大。嚴格按時序圖來寫程序就行的
回復

使用道具 舉報

ID:493146 發表于 2021-2-1 19:03 來自觸屏版 | 顯示全部樓層
謝謝各位
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表