繼上回gameduino牛刀小試後,這篇blog要介紹的是RTC時鐘 PCF8563, 若有不周,歡迎批評指教,缺漏的部份日後會慢慢補上. 轉貼或引用本篇blog內文章段落, 不必交代出處.不過程式碼的部分是拿TI官網找到的usci i2c master Library sample code並參考某網站EEPROM sample code的HW uart部分而寫成的,所以相關著作權法律的問題請注意一下!
過程:
起先板子買錯買成5V tiny rtc ds1307 for arduino,目前已改過板子改成可以3V用的,但是coding還是沒成功, 軟體方面一直受挫,就會懷疑到硬體上, 板子上還有一顆EEPROM 24C32不用改板,3V的msp430g2553也可用I2C跟它溝通, coding ok就證明msp430g2553在usci i2c介面是ok的, 衝動之下又去買了3V專用的rtc nxp pcf8563, 起先用EEPROM coding的方式不成功, 又改用usci i2c master Library coding方式也不成功, 想要用傳統的8051隨便找兩根GPIO pin來用軟體模擬硬體I2C的SDA,SCL訊號, 更差點衝動去買USBee示波器(邏輯分析儀), 有稍微check一下是否是硬體有問題(pull-up電阻雖只有1k,但是查datasheet Rpu公式後發現1k剛好,晶振也接地,晶振電路也ok,程式看的出來硬體並非完全都有問題). 因出差所以暫時放著兩天後, 看書提到msp430g2553 usci i2c 7-bits slave address的值就是看datasheet上面提到的slave address 7bits + R/W bit=1 byte, 整個 byte 右移1位就是msp430g2553在用的slave address, 先前被datasheet提到write就用0xA2, read就用0xA3給蒙蔽, 其實答案是:0xA2(或0xA3)>>1,果然改了之後就成功了!
1.msp430g2553板子上面的J5 P1.6 jumper拿掉, P1.6當SCL,P1.7當SDA, J3調成HW UART,
2.兩塊板子的Vcc,GND,SDA,SCL互相接在一起,
3.程式用CCSv6編譯, rtc先將目前時間日期寫值進去, 再讀出來, 透過uart秀到PC螢幕上,也就是CCSv6內建陽春版的超級終端機, 最後用while-loop 每秒秀一次時間日期(秒:分:時 星期幾 日-月-年),master Library裡面的TI_USCI_I2C_slave_present();拿掉UCTXSTP,因為跟TX_ISR重複!
->083014更新:加入start-up delay幫助pcf8563通電後需要一段時間來ready,新發現:pcf8563會掉秒!
接線圖:
https://drive.google.com/file/d/0B6EVEd5P2B9cclNvWHFlalNPYUE/edit?usp=sharing
你好可以加個e-mail詢問問題嗎?
回覆刪除您好,
刪除1.首先感謝您的留言,
2.如果您要詢問問題的話,不妨在這網頁直接留言即可,如果剛好我會的話也直接在這回答您的問題,這樣以後若有同樣問題的網友也可一起看到答案!
3.如果您不方便在這留言發問的話,也可留下您的email我會再跟您聯絡!