久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 奇怪的XPT2046_ADC芯片的SPI時序! [打印本頁]

作者: SHANWAZI    時間: 2021-11-11 20:56
標題: 奇怪的XPT2046_ADC芯片的SPI時序!
今天在寫XPT2046的ADC芯片程序時發現的一個問題對芯片使用SPI方式寫入指令時的時序問題下面上邏輯分析儀波形圖:

請看圖一:
0通道為時鐘信號
1通道為單片機寫入信號(數據)
2通道為ADC    輸出信號(數據)
3通道為片選信號(略)

根據數據手冊得知:控制字節的位在時鐘的上升沿時鎖存進去。
問題1:就是在對于的邏輯分析儀2通道可以看到在寫入控制字節時(因為時鐘出現下降沿???)也出現了讀出的時序,寫入的同時就在輸出???? 而且在讀的時候同時也在寫入(是因為讀的時候時鐘產生了上升沿嗎????)

問題2:特別是BUSY忙時腳位到底時干嘛的?控制字節寫完后此腳產生一個時鐘周期的高電平???(是不是可以認為是等待ADC轉換完畢的時間??)
DOUT引腳會送出ADC轉換的數字量的最高位?

虛心向論壇老鐵請教一下!。。。。。。。。


CS_N:芯片選中信號,當CS_N被拉低時,用來控制轉換時序并使能串行輸入/輸出寄存器以移出或移入數據。當該引腳為高電平時,芯片(ADC)進入掉電模式。
DCLK:外部時鐘輸入,該時鐘用來驅動SARADC的轉換進程并驅動數字IO上的串行數據傳輸。
DIN:芯片的數據串行輸入腳,當CS為低電平時,數據在串行時鐘DCLK的上升沿被鎖存到片上的寄存器。
DOUT:串行數據輸出,在串行時鐘DCLK的下降沿數據從此引腳上移出,當CS_N引腳為高電平時,該引腳為高阻態。

BUSY:忙輸出信號,當芯片接收完命令并開始轉換時,該引腳產生一個DCLK周期的高電平。
當該引腳由高點平變為低電平的時刻,轉換結果的最高位數據呈現在DOUT引腳上,
主控可以讀取DOUT的值。當CS_N引腳為高電平時,BUSY引腳為高阻態。

2.PNG (45.91 KB, 下載次數: 126)

完整時序圖

完整時序圖

作者: rayin    時間: 2021-11-12 08:42
2046這個電阻觸控IC上個月用過, clcok 信號要輸入8+1+16個,前面8個是寫入控制字節0x90,0xd0, 再給一個clcok用于清除busy信號, 后面16個clock是用來接收12位AD轉換xy的坐標。
問題1: 寫入0x90,0xd0的時候,2046是不會發送AD信號的。要等busy信號清除之后,才發送。我用的過程中,寫入0x90,0xd0的時候,miso上是沒有信號跳變的,清除busy信號之后,2046才外發數據。
問題2:busy信號是AD轉換過程需要花費時間,完成了2046會清除。

以上是我的一點經驗共享。
作者: SHANWAZI    時間: 2021-11-12 10:24
rayin 發表于 2021-11-12 08:42
2046這個電阻觸控IC上個月用過, clcok 信號要輸入8+1+16個,前面8個是寫入控制字節0x90,0xd0, 再給一個clc ...

非常感謝分享經驗!我現在只是使用此芯片作為ADC模塊 且并沒有把BUSY管腳到單片機上。
現在的這個時序好奇怪并沒有讀取DOUT的數據,
寫的同時也會有數據返回!!。。。!一時半會弄不明白。。。。。
作者: 188610329    時間: 2021-11-12 14:42
DOUT 一般需要10K上拉,你的MISO 低電平肯定有問題,沒有信號的時候,即使IO高阻也應該高電平。
作者: SHANWAZI    時間: 2021-11-12 18:12
188610329 發表于 2021-11-12 14:42
DOUT 一般需要10K上拉,你的MISO 低電平肯定有問題,沒有信號的時候,即使IO高阻也應該高電平。

有的!根據數據手冊所說此腳是AD串行數字量輸出供單片機讀取 而我單片機IO腳是有對應上拉電阻的10K應該沒什么問題吧? 依您所說即使沒有信號時 和此腳IO高阻也應該出現高電平狀態!但是現在恰恰相反! 而且出現電平跳變的地方也正是在寫入控制字節時的CLOCK脈沖下出現的?我現在就是因為這個才感到疑惑。按手冊所說DOUT引腳是在BUSY引腳出現下降沿時ADC轉換結果的最高位會出現在DOUT引腳,F在恰恰是在寫入控制字節時DOUT就已經在輸出了?在邏輯分析儀上可以看出。
作者: SHANWAZI    時間: 2021-11-12 21:33
人工置頂員 發表于 2021-11-12 18:57
頂一下

感謝!
作者: 188610329    時間: 2021-11-12 22:27
你試試看 調整一下時序,

拉低CS 之后,拉高DI, 給1微秒的延時之后,再拉高時鐘線,看你的時序圖  時鐘和DI幾乎同時拉高了,是不是這個原因造成你的DOUT 又拉低了呢?因為沒有收到有效信號?
作者: SHANWAZI    時間: 2021-11-14 00:02
188610329 發表于 2021-11-12 22:27
你試試看 調整一下時序,

拉低CS 之后,拉高DI, 給1微秒的延時之后,再拉高時鐘線,看你的時序圖  時鐘 ...

以按照您建議操作也并未有啥改善  反倒直接沒有輸出了!尷尬
作者: TTQ001    時間: 2021-11-14 03:48
感謝分享有關 SPI 時序
作者: rayin    時間: 2021-11-14 09:56
用示波器抓下波形相對邏輯分析儀要準確一點, 邏輯分析儀對速度快點的信號可能不準確,給你造成誤導. 希望對你有用.
作者: SHANWAZI    時間: 2021-11-14 11:25
TTQ001 發表于 2021-11-14 03:48
感謝分享有關 SPI 時序

一起學習
作者: SHANWAZI    時間: 2021-11-14 11:26
rayin 發表于 2021-11-14 09:56
用示波器抓下波形相對邏輯分析儀要準確一點, 邏輯分析儀對速度快點的信號可能不準確,給你造成誤導. 希望對 ...

感謝提出建議!
作者: 188610329    時間: 2021-11-14 12:49
SHANWAZI 發表于 2021-11-14 00:02
以按照您建議操作也并未有啥改善  反倒直接沒有輸出了!尷尬

是這個東西吧?



按時序圖上看, CS拉底后,DI 必須置1,然后再給時鐘,此時Dout會為低,所以你說的沒“輸出”如果指為低,那么就對了。
唯一不確定的,就是下面那兩條線Dirver1 and 2,是否必須在第五個時鐘拉高,是不是必要條件,但是感覺,拉高的時機來看,必須拉高了,后面才會有Busy, Dout才會有回傳。你現在橫豎不成功,可以試試。

作者: SHANWAZI    時間: 2021-11-14 13:22
188610329 發表于 2021-11-14 12:49
是這個東西吧?

是的是的他的真正在處于轉換是不是在BUSY變成高電平后的八個時鐘周期或者是12個?
作者: 188610329    時間: 2021-11-14 14:05
SHANWAZI 發表于 2021-11-14 13:22
是的是的他的真正在處于轉換是不是在BUSY變成高電平后的八個時鐘周期或者是12個?

真正轉換,應該在busy為高,表示在轉換。
此時你再給一個時鐘,之后,就安靜等待Busy為低,等到busy 為低了,DOUT就會輸出,可能是1可能是0這個不用管,反正給夠12個時鐘,收足12個位數據,然后再算到底是多少。
作者: SHANWAZI    時間: 2021-11-14 14:39
188610329 發表于 2021-11-14 14:05
真正轉換,應該在busy為高,表示在轉換。
此時你再給一個時鐘,之后,就安靜等待Busy為低,等到busy 為 ...






實際上籃筐這里才是才是真正的AD轉換對不???也就是BUSY變為高電平后的  前面的控制字節寫完后BUSY就是高電平了,
是不是可以考慮使用一點延時等一下過去????BUSY的下降沿時刻會把ADC結果最高位出現在DOUT供外部讀。。。。。

作者: 188610329    時間: 2021-11-14 16:32
當Dout開始輸出的時候,轉換已經完畢了,
所以,你唯一需要等待的,只是BUSY 變低電平。
代碼上來講,你只需要在發完PD0之后, BUSY == 1 之后,
再給一個時鐘 即第9時鐘,之后,
while(BUSY);  傻等BUSY為0即可
然后,就是接受12位數據。
按時序圖上看,收完11位數據后,收最后一位數據時 Driver 2 需要給低電平,然后再給3個空時鐘,然后CS拉高。
作者: SHANWAZI    時間: 2021-11-14 16:59
188610329 發表于 2021-11-14 16:32
當Dout開始輸出的時候,轉換已經完畢了,
所以,你唯一需要等待的,只是BUSY 變低電平。
代碼上來講,你 ...

感謝指導。。。!  似乎明白這時序圖了。。!原來一直是我看錯時序圖了。
作者: SHANWAZI    時間: 2021-11-14 20:57
SHANWAZI 發表于 2021-11-14 16:59
感謝指導。。。!  似乎明白這時序圖了。。!原來一直是我看錯時序圖了。



但是看起來時序也不太對  和實際輸出值差異大讀取錯誤!。。。。。。。!

作者: 188610329    時間: 2021-11-14 22:07
你試試看極端值,比如最低,或者最高,是不是給你全0,全1,是的話,就說明,通訊肯定是對的,如果不是的話,那么還是分析分析Driver 1 & 2 這里是不是有什么問題。 手冊我沒仔細看。畢竟這芯片我也沒有,研究了也沒啥用,但是,比較確定的是,Driver 1 & 2 肯定是有一定用處的。 也許是觸控板的控制,也許是ADC控制,細讀手冊吧, 按IO的標注來看,通信協議有點類似 MicroWire 非常接近SPI 但不是SPI的協議,比如第一個1, 以及等待Busy, 都是MicorWire 協議的特征,所以,如果真是MicroWire協議的話,那么,時序要求是非常嚴格的,你再仔細對照手冊看看吧。不排除,要ADC之前,要額外發個什么指令初始化之類的。
作者: SHANWAZI    時間: 2021-11-15 21:58
188610329 發表于 2021-11-14 22:07
你試試看極端值,比如最低,或者最高,是不是給你全0,全1,是的話,就說明,通訊肯定是對的,如果不是的話 ...

非常感謝提出建議和思路我再細看一下芯片手冊!!。。。。。
作者: 孫燁    時間: 2024-4-25 14:24
SHANWAZI 發表于 2021-11-15 21:58
非常感謝提出建議和思路我再細看一下芯片手冊!。。。。。。

你好,我也遇到這個問題,不知道能否給一下后面您的進一步探究結果




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日韩视频免费在线观看 | 国产精久久 | 久草手机在线视频 | 97超碰人人 | 色综合天天综合网天天狠天天 | 一区在线观看 | 国产va在线观看 | 三级在线观看 | 黄色www| 国产亚洲久一区二区 | 色接久久 | 欧美日韩在线一区 | 久久er99热精品一区二区 | 欧美综合久久 | 视频在线一区 | 蜜桃精品视频 | 久久综合爱| 成人黄色免费网站 | 欧美精品在线观看视频 | av不卡在线播放 | 四虎在线观看视频 | 免费av大片 | 日韩福利片| 午夜小视频在线观看 | 欧美黄视频 | 国产黄色一级毛片 | 亚洲一区二区三区在线播放 | 久草视频在线播放 | 理论片中文字幕 | 蜜臀av性久久久久av蜜臀妖精 | 欧美日韩亚洲一区二区三区 | 国产理论视频 | 成人av影视| 成人免费毛片片v | 天堂网久久| 亚洲精品中文字幕乱码三区91 | 国产免费一级 | 色多多视频在线观看 | 色天天综合 | 天天操夜夜干 | 亚洲精品免费在线观看 |