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

標題: 請問下SPI總線通信時,為什么先要給MISO高電平? [打印本頁]

作者: yuwei51    時間: 2020-3-5 21:11
標題: 請問下SPI總線通信時,為什么先要給MISO高電平?
void write(uchar a)
{
        uchar i=0;
        SI=1;  ####請教下各位大神,為什么這個位置要置1,我試了下,寫0是不行的。
        for(i=0;i<8;i++)                  //8位數據串行輸出
        {
                SCK=0;                          //時鐘 低電平
                SO=(a&0x80);         //口首先輸出高位
                a=a<<1;                          //a左移一位,為下一次輸出做準備
                SCK=1;                          //時鐘上升沿 , 存儲器讀電平
                delay(5);                  //延時一小會
        }
}


作者: eastjack    時間: 2020-3-5 23:01
si是輸入?為什么寫呢
作者: faguiq    時間: 2020-3-6 00:58
發送數據SI不用寫就行了,寫0就接收不到數據了,SPI原則是發送數據同時會把從機讀出一次,不管有沒有用,你可以看一下SPI原則,還有文中左移一位也不是你理解的為下一次輸出做準備,而是最低位為0表示發送完成,最高位為識別位
作者: yuwei51    時間: 2020-3-6 11:47
eastjack 發表于 2020-3-5 23:01
si是輸入?為什么寫呢

SI是單片機的SPI數據輸入接口,也就是MISO接口,我簡寫成SI.我現在只是想寫一個單片機從SPI讀數據的程序。奇怪的是,這個SI我寫1就正常可以讀出數據,只要寫0,就讀不出任何數據。
作者: yuwei51    時間: 2020-3-6 11:49
faguiq 發表于 2020-3-6 00:58
發送數據SI不用寫就行了,寫0就接收不到數據了,SPI原則是發送數據同時會把從機讀出一次,不管有沒有用,你 ...

SI是單片機的SPI數據輸入接口,也就是MISO接口,我簡寫成SI.我現在只是想寫一個單片機從SPI讀數據的程序。奇怪的是,這個SI我寫1就正常可以讀出數據,只要寫0,就讀不出任何數據。
作者: faguiq    時間: 2020-3-6 13:35
yuwei51 發表于 2020-3-6 11:49
SI是單片機的SPI數據輸入接口,也就是MISO接口,我簡寫成SI.我現在只是想寫一個單片機從SPI讀數據的程序 ...

接收數據不用寫SI,直接發送指令就行,還有接收數據要再發送一次,等于要接收一次數據,主機要發送兩次
作者: yuwei51    時間: 2020-3-6 15:02
faguiq 發表于 2020-3-6 00:58
發送數據SI不用寫就行了,寫0就接收不到數據了,SPI原則是發送數據同時會把從機讀出一次,不管有沒有用,你 ...

確實,測試了下,這個MISO什么都不寫就可以,寫1也可以,就是不能寫0.多謝。




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1