作者查詢 / TWkobe

總覽項目: 發文 | 留言 | 暱稱
作者 TWkobe 在 PTT [ Electronics ] 看板的留言(推文), 共76則
限定看板:Electronics
首頁
上一頁
1
下一頁
尾頁
[請益] Shared-Data Bug
[ Electronics ]14 留言, 推噓總分: +3
作者: zzss2003 - 發表於 2017/09/05 14:38(6年前)
5FTWkobe: 應該是說interrupt沒辦法真正達到atomic operation,使09/05 14:55
6FTWkobe: data race的情況會發生09/05 14:55
7FTWkobe: 所以要確保interrupt期間不會發生 不然就要引入critical09/05 14:56
8FTWkobe: section了09/05 14:56
[請益] I2C EEPROM Start Address
[ Electronics ]6 留言, 推噓總分: +1
作者: vito9580 - 發表於 2017/09/04 14:29(6年前)
1FTWkobe: 那個control byte就是24LC16這個slave addr只是後面3個是09/04 20:55
2FTWkobe: control bit09/04 20:56
3FTWkobe: 至於會不會不一樣 有可能啊他分成8個block當然addr會不一09/04 20:57
4FTWkobe: 樣 後面的word address是寫入eeprom的目標位置09/04 20:58
[請益] 如何看slave的address?(bq769x0)
[ Electronics ]14 留言, 推噓總分: +3
作者: zzss2003 - 發表於 2017/07/17 15:58(6年前)
6FTWkobe: 1:是 然後當你發完addr至master, master會發一個ack bit07/17 22:06
7FTWkobe: 2:如果你會解析bq76920的時序 你量sda,scl也可以知道07/17 22:09
8FTWkobe: 你可以飛線至bq76920的sda,scl連至你一個要用的mcu07/17 22:11
9FTWkobe: sorry打太快說反, 是第一次發addr時, slave會回傳ack bit07/17 22:24
[問題] 請問Flash的page/sector erase..
[ Electronics ]5 留言, 推噓總分: +3
作者: fakenews - 發表於 2017/06/20 23:09(7年前)
1FTWkobe: 要看哪一種flash 有些是block erase06/20 23:16
2FTWkobe: 其實具體來說 用sector或block來erase怎麼實作看廠商06/20 23:23
3FTWkobe: 不過你說的page erase似乎是page program? 小弟沒看過06/20 23:24
4FTWkobe: 有錯請指正06/20 23:24
5FTWkobe: sector erase沒有到整面erase這麼大,整面已經是chip erase06/21 00:08
[問題] C語言結構設定
[ Electronics ]5 留言, 推噓總分: +1
作者: corydoras09 - 發表於 2017/06/08 12:32(7年前)
2FTWkobe: 不用global也可以 就用pointer處理不就好了06/08 19:44
Re: [問題] 求救!!寫不出I2C我就要走路了
[ Electronics ]24 留言, 推噓總分: +8
作者: zzss2003 - 發表於 2017/05/31 10:33(7年前)
1FTWkobe: 你的理解沒錯 通常官方libs有個pin define05/31 16:40
2FTWkobe: 通常會幫你弄好很多的macro 可以設定某個腳為什麼樣的態05/31 16:42
3FTWkobe: 使用i2c前正確的設定好各個腳的態後, 再賦值給相對應的pin05/31 16:42
4FTWkobe: 為0或1即可05/31 16:43
5FTWkobe: 然後有些你說的register名稱 我沒用過pic不清楚05/31 16:44
6FTWkobe: 還有傳給SSP1BUF我猜那是硬體i2c用的data buffer, 原理大05/31 16:44
7FTWkobe: 概就是要將傳送的資料先寫入至此buffer, 硬體會自動將裡面05/31 16:45
8FTWkobe: data再行傳輸出去, 是比較穩當保險的做法05/31 16:46
9FTWkobe: 至於用software simulate的i2c就是直接控制腳來傳送05/31 16:46
10FTWkobe: 所以運作原理跟官方用的硬體i2c當然不同05/31 16:47
11FTWkobe: 我只能幫到此, 因為我沒用過這系列mcu就是了XD05/31 16:48
[問題] 求救!!寫不出I2C我就要走路了
[ Electronics ]78 留言, 推噓總分: +27
作者: zzss2003 - 發表於 2017/05/28 22:15(7年前)
1FTWkobe: 有先確定接線都符合spec規範?05/28 22:23
2FTWkobe: mcu有先量過gpio產生的方波符合spec的要求?05/28 22:29
3FTWkobe: 看spec這i2c是write/read的basic function看page 3405/28 22:33
4FTWkobe: slave addr就是你這個外部設備的地址05/28 22:33
5FTWkobe: 你看p16有寫要符合方波的要求05/28 22:35
6FTWkobe: address high/low 應該只是一次接收量不夠分high low05/28 22:39
7FTWkobe: 實際上還是當作address而已05/28 22:39
10FTWkobe: CRC是校驗碼, 偶爾會因為有雜訊造成data錯誤 利用這個可以05/28 22:51
11FTWkobe: 簡單還原正確的data05/28 22:51
12FTWkobe: 地址是0x60, 但實際上只要餵7bit address, 有些可以直接給05/28 22:55
13FTWkobe: 0x60, 有些要手動shit 1bit05/28 22:55
14FTWkobe: 我是有遇過要手動shift的05/28 22:55
16FTWkobe: 你就弄一個#define addr 0x6005/28 22:56
17FTWkobe: #define addr_msg addr>>105/28 22:56
18FTWkobe: 實驗看看需不需要手動移, 正確的話,slave端會回傳一個ack05/28 22:57
19FTWkobe: 至於pic的講的應該是他的libs作法, 我習慣先自己寫一個05/28 22:58
20FTWkobe: software i2c function先驗證是否正確05/28 22:58
22FTWkobe: 還有p16重點是看此裝置的i2c是active high or low05/28 23:00
23FTWkobe: 通常是看start signal, 這spec看起來是active low05/28 23:01
24FTWkobe: 意思是說sda先low一段時間後, 接著scl開始low05/28 23:04
25FTWkobe: 弄個虛擬碼你大概就知道怎麼做05/28 23:05
26FTWkobe: void swi2c_START (int delyTime) {05/28 23:05
27FTWkobe: sda_set(); delay_us(delayTime);05/28 23:07
28FTWkobe: scl_set(); delay_us(delayTime);05/28 23:08
29FTWkobe: sda_clear(); delay_us(delayTime);05/28 23:08
30FTWkobe: scl_clear(); delay_us(delayTime); }05/28 23:09
31FTWkobe: 然後再弄一個swi2c_WRITE(int msg) {05/28 23:12
32FTWkobe: int data=msg; for(int i=0; i<8; i++) {05/28 23:13
33FTWkobe: if(data & 0x01) sda_set(); else sda_clear(); delay;05/28 23:16
34FTWkobe: data >= 1; }05/28 23:16
35FTWkobe: 這個function 可以用來解析要寫入的data來控制sda05/28 23:17
36FTWkobe: 例如要寫入的slav_addr / reg_index / write_data都可用到05/28 23:19
37FTWkobe: 最後再湊一個swi2c_writeMSG function來組合完整的write05/28 23:21
38FTWkobe: sequence05/28 23:21
39FTWkobe: 寫好後拿示波器量測scl/sda是否有符合完整個write signal05/28 23:22
40FTWkobe: 當你完成寫入上述三者都應該會在sda看到正確的ack signal05/28 23:23
41FTWkobe: 還有pic說給完address就給data的說法為何跟你spec不同的05/28 23:26
42FTWkobe: 原因是你裝置spec的reg_index/write_data也是data呀05/28 23:27
43FTWkobe: 不是因此i2c有何不同, i2c是標準大家都差不多, 只差在餵的05/28 23:28
44FTWkobe: data會不同 所以pic官方才說直接後面給data05/28 23:28
45FTWkobe: 剩下的就可以依據我說的弄出read的完整function了05/28 23:30
46FTWkobe: 我忘了說msg之間的w/r bit是幹嘛05/28 23:34
47FTWkobe: 這個是說接下來要對slave裝置是要進行read或write動作05/28 23:35
48FTWkobe: 然後在說一下read sequence, 比較複雜一點05/28 23:37
49FTWkobe: 他等於要先對slave寫入address/reg_index後05/28 23:38
50FTWkobe: 結束一次i2c再重新restart寫入地址, 接著就重slave端讀取05/28 23:39
51FTWkobe: sda signal05/28 23:39
首頁
上一頁
1
下一頁
尾頁