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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4158|回復: 21
打印 上一主題 下一主題
收起左側

奇怪的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)

完整時序圖

完整時序圖
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:517951 發表于 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會清除。

以上是我的一點經驗共享。
回復

使用道具 舉報

板凳
ID:232366 發表于 2021-11-12 10:24 | 只看該作者
rayin 發表于 2021-11-12 08:42
2046這個電阻觸控IC上個月用過, clcok 信號要輸入8+1+16個,前面8個是寫入控制字節0x90,0xd0, 再給一個clc ...

非常感謝分享經驗!我現在只是使用此芯片作為ADC模塊 且并沒有把BUSY管腳到單片機上。
現在的這個時序好奇怪并沒有讀取DOUT的數據,
寫的同時也會有數據返回!!!!!!!一時半會弄不明白!!!!!!
回復

使用道具 舉報

地板
ID:624769 發表于 2021-11-12 14:42 | 只看該作者
DOUT 一般需要10K上拉,你的MISO 低電平肯定有問題,沒有信號的時候,即使IO高阻也應該高電平。
回復

使用道具 舉報

5#
ID:232366 發表于 2021-11-12 18:12 來自手機 | 只看該作者
188610329 發表于 2021-11-12 14:42
DOUT 一般需要10K上拉,你的MISO 低電平肯定有問題,沒有信號的時候,即使IO高阻也應該高電平。

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

使用道具 舉報

6#
ID:232366 發表于 2021-11-12 21:33 | 只看該作者
回復

使用道具 舉報

7#
ID:624769 發表于 2021-11-12 22:27 | 只看該作者
你試試看 調整一下時序,

拉低CS 之后,拉高DI, 給1微秒的延時之后,再拉高時鐘線,看你的時序圖  時鐘和DI幾乎同時拉高了,是不是這個原因造成你的DOUT 又拉低了呢?因為沒有收到有效信號?
回復

使用道具 舉報

8#
ID:232366 發表于 2021-11-14 00:02 | 只看該作者
188610329 發表于 2021-11-12 22:27
你試試看 調整一下時序,

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

以按照您建議操作也并未有啥改善  反倒直接沒有輸出了!尷尬
回復

使用道具 舉報

9#
ID:420836 發表于 2021-11-14 03:48 | 只看該作者
感謝分享有關 SPI 時序
回復

使用道具 舉報

10#
ID:517951 發表于 2021-11-14 09:56 | 只看該作者
用示波器抓下波形相對邏輯分析儀要準確一點, 邏輯分析儀對速度快點的信號可能不準確,給你造成誤導. 希望對你有用.
回復

使用道具 舉報

11#
ID:232366 發表于 2021-11-14 11:25 | 只看該作者
TTQ001 發表于 2021-11-14 03:48
感謝分享有關 SPI 時序

一起學習
回復

使用道具 舉報

12#
ID:232366 發表于 2021-11-14 11:26 | 只看該作者
rayin 發表于 2021-11-14 09:56
用示波器抓下波形相對邏輯分析儀要準確一點, 邏輯分析儀對速度快點的信號可能不準確,給你造成誤導. 希望對 ...

感謝提出建議!
回復

使用道具 舉報

13#
ID:624769 發表于 2021-11-14 12:49 | 只看該作者
SHANWAZI 發表于 2021-11-14 00:02
以按照您建議操作也并未有啥改善  反倒直接沒有輸出了!尷尬

是這個東西吧?



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

使用道具 舉報

14#
ID:232366 發表于 2021-11-14 13:22 | 只看該作者

是的是的他的真正在處于轉換是不是在BUSY變成高電平后的八個時鐘周期或者是12個?
回復

使用道具 舉報

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

真正轉換,應該在busy為高,表示在轉換。
此時你再給一個時鐘,之后,就安靜等待Busy為低,等到busy 為低了,DOUT就會輸出,可能是1可能是0這個不用管,反正給夠12個時鐘,收足12個位數據,然后再算到底是多少。
回復

使用道具 舉報

16#
ID:232366 發表于 2021-11-14 14:39 | 只看該作者
188610329 發表于 2021-11-14 14:05
真正轉換,應該在busy為高,表示在轉換。
此時你再給一個時鐘,之后,就安靜等待Busy為低,等到busy 為 ...






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

使用道具 舉報

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

使用道具 舉報

18#
ID:232366 發表于 2021-11-14 16:59 | 只看該作者
188610329 發表于 2021-11-14 16:32
當Dout開始輸出的時候,轉換已經完畢了,
所以,你唯一需要等待的,只是BUSY 變低電平。
代碼上來講,你 ...

感謝指導!!!!!  似乎明白這時序圖了!!!!原來一直是我看錯時序圖了。
回復

使用道具 舉報

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



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

使用道具 舉報

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

使用道具 舉報

21#
ID:232366 發表于 2021-11-15 21:58 | 只看該作者
188610329 發表于 2021-11-14 22:07
你試試看極端值,比如最低,或者最高,是不是給你全0,全1,是的話,就說明,通訊肯定是對的,如果不是的話 ...

非常感謝提出建議和思路我再細看一下芯片手冊!!!!!!!!
回復

使用道具 舉報

22#
ID:1118271 發表于 2024-4-25 14:24 | 只看該作者
SHANWAZI 發表于 2021-11-15 21:58
非常感謝提出建議和思路我再細看一下芯片手冊!!!!!!!!

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 五月天国产视频 | 国产成人免费视频网站高清观看视频 | 一区二区三区四区在线免费观看 | 欧美精品一区二区三区蜜桃视频 | 成人精品一区 | 国产一级片久久久 | 国产成人啪免费观看软件 | 色婷婷激情综合 | 91精品国产91久久久久青草 | 国产区精品 | 久久久国产一区二区三区四区小说 | 中文字幕1区 | 四虎影院新网址 | 欧美综合视频在线 | 国产专区在线 | 国产一区二区三区四区在线观看 | 一本大道久久a久久精二百 欧洲一区二区三区 | 亚洲资源在线 | 中文一区| 日韩一区二区三区视频 | 国产日韩欧美一区 | 在线免费黄色小视频 | 国产一区二区三区免费 | 国产精品成人一区二区 | 国产在线观看福利 | 中文字幕国产一区 | 天天干天天玩天天操 | 国产精品成人一区 | 亚洲精品久久久久avwww潮水 | 久久另类 | 麻豆av电影网 | 欧美 中文字幕 | 免费黄色大片 | 日韩高清一区 | 日日天天 | 亚洲精品一区二区三区在线观看 | 精品国产乱码久久久久久老虎 | 欧美一区2区三区4区公司 | 欧美福利影院 | 国产成人精品a视频 | 欧美高清视频一区 |