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

上圖為寄存器讀時序,為什么先貼出這個圖呢,因為讀寄存器包含了單字節的寫以及單字節的讀。從圖上可以看出,讀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; //返回數據
}
寄存器寫時序

上圖為寄存器寫時序,拉高RST腳后,寫入地址再寫入數據最后拉低RST腳,這樣就完成了寫寄存器操作。完成以下的代碼:
void dsWriteReg(u8 addr,u8 dat) //寫寄存器
{
ds1302RSTStatu(1); //拉高RST腳
dsWriteByte(addr); //寫入地址
dsWriteByte(dat); //寫入數據
ds1302RSTStatu(0); //拉低RST腳
}
四個時序到此就分析結束了,再回頭看看編寫的代碼都是依據時序得來的,學會分析時序圖就可以寫出屬于自己的代碼了,同樣可以依據時序圖來檢查代碼的錯誤。了解了這部分的時序分析,推薦大家利用模擬SPI的通信方式編寫xpt2046的讀寫函數。
上一篇:單片機最小系統與PC機的通信分析
下一篇:Windows CE.NET 4.2中PC與單片機的串行通信
推薦閱讀
史海拾趣
隨著技術的不斷進步和市場的不斷擴大,APT公司的產品逐漸應用于半導體制造和其他清潔行業,如太陽能電池板、LCD、LED、平板顯示器等。2000年,APT公司決定創建高純度產品系列,并成功推出了HP特種氣體應用和AK產品線。這一舉措不僅進一步豐富了APT公司的產品線,也使其能夠更好地滿足高端市場的需求。此后,APT公司不斷拓展其市場版圖,產品遠銷全球各地,贏得了廣泛的客戶認可。
背景:面對電子行業日新月異的技術變革和消費者日益多樣化的需求,Galaxy深知持續創新的重要性。
行動:公司不斷加大研發投入,致力于產品技術的突破和創新。同時,為了更好地滿足市場需求和提升品牌形象,Galaxy推出了全新的品牌理念和系列產品。例如,“個性玩家 影馳顯卡”的品牌理念以及獨一無二的“影馳玩家系列”產品,憑借獨特的雙BIOS設計、蜂鳴器報警設計等創新功能,贏得了廣大消費者的喜愛和認可。
成果:這些創新舉措不僅提升了Galaxy產品的市場競爭力,還進一步鞏固了公司在電子行業內的領先地位。
背景:隨著中國經濟的快速發展和消費者對電子產品需求的不斷增加,Galaxy公司敏銳地捕捉到這一市場機遇。
行動:在2003年初,Galaxy以縝密的市場調研為基礎,全力部署進入大陸市場。同年6月,公司推出了以“影馳”命名的Geforce家族系列產品,迅速吸引了眾多游戲發燒友和電子產品愛好者的關注。隨后,公司又在多個城市設立了銷售和服務網點,為消費者提供更加便捷的產品體驗和服務。
成果:經過多年的深耕細作,Galaxy在大陸市場取得了顯著成績,品牌影響力不斷增強,市場份額穩步提升。
在20世紀初,BELDEN公司在技術創新方面取得了顯著突破。公司不僅將塑料絕緣材料應用于電線和電纜制造,還著眼于精密和高質量產品的需求,致力于高附加值的絕緣材料、電纜、防護和護套材料的生產。這些技術創新使得BELDEN的產品在性能和質量上都有了顯著提升,進一步鞏固了公司在市場中的地位。同時,公司還不斷擴大產品線,增加了橡膠絕緣材料等多種新產品,滿足了不同客戶的需求。
ELM Technology Corporation非常重視企業文化的建設。公司倡導“創新、協作、誠信、責任”的企業精神,鼓勵員工積極創新、勇于擔當。同時,公司還為員工提供了良好的工作環境和福利待遇,增強了員工的歸屬感和凝聚力。這種積極向上的企業文化為ELM的持續發展提供了強大的動力。
請注意,以上故事僅為概述,具體細節和事實需要根據ELM Technology Corporation的實際情況進行補充和完善。
為了確保產品質量的穩定和可靠,Control Sciences Inc建立了一套完善的質量管理體系。公司從原材料采購、生產過程到產品出廠,都實行了嚴格的質量控制。同時,公司還引入了先進的質量檢測設備和方法,確保每一臺產品都符合客戶的要求。這一舉措使得Control Sciences Inc的產品在市場上贏得了良好的聲譽。
這幾天折騰一個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(. ...… 查看全部問答∨ |
|
void Usart_init ( void ) { COM0= AT91C_BASE_US1; //* Define RXD and TXD as peripheral // Configure PIO controllers to periph mode AT91F_PIO_CfgPeriph( ...… 查看全部問答∨ |
|
用什么代碼能開啟pda的無線功能? wince高手們,小弟現在用的是華碩的626的一款pda,操作系統是windows mobile6.0,支持無線Wi-Fi; 小弟現有一個問題,我在程序中用什么函數能夠自動啟用無線功能?… 查看全部問答∨ |
向來以聯發科為首的大陸手機芯片市場,進入同業相互廝殺的白熱化階段,聯發科與展訊市占之爭恐在第4季出現大幅改變,近期業界傳出展訊第4季在臺積電取得足夠晶圓代工產能后,投片量大增60%,相較之下,聯發科則降低在臺積電投片量,集中于聯電,近2 ...… 查看全部問答∨ |