[問題] SPI底層buffer bit數不對稱

看板ASM (組合語言)作者 (99通未接來電)時間12年前 (2013/01/29 16:46), 編輯推噓6(6017)
留言23則, 5人參與, 最新討論串1/1
各位先進好 想請問SPI一些問題 因為看了sample code 發現底層也是有一個 "BYTE" buffer 作傳輸 可是目前小弟的 晶片通訊協定 head (10bits)+register(10bits)+Data_N..(10bits*N) 是為10bits做一個單位 就算我用bitfild typedef struct { long A :10; long B :10; long C :10; long D :2 ; }Packdata; 之後也是只能用buffer=_Packdata.A>>8 還是卡在buffer不對稱 感覺越弄越複雜... 怎樣想都沒辦法達到晶片的需求 想請問要怎樣處理這種問題 ? PS:MCU Siliconlab F330 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 39.11.27.148 ※ 編輯: gg1122 來自: 39.11.27.148 (01/29 16:47)

01/29 17:22, , 1F
分兩個byte傳,傳完再組合成一個word不行嗎?
01/29 17:22, 1F

01/29 22:43, , 2F
這樣怎湊 只能8bit的倍數 遇到total data length 30bit
01/29 22:43, 2F

01/29 22:44, , 3F
還是會多送二個bit過去 因為底層一次出去就一個byte
01/29 22:44, 3F

01/29 22:47, , 4F
SPI0DAT = indata;整個就收走了 跟i2c uart 一樣
01/29 22:47, 4F

01/29 22:49, , 5F
這樣CS時序 跟spec的 就不同 很苦惱 希望有人有經驗能分享
01/29 22:49, 5F

01/29 23:23, , 6F
使用ISR混和硬體軟體傳送:最後一組用軟體送/收 如何?
01/29 23:23, 6F

01/29 23:28, , 7F
W大可以講清楚點嗎 聽不懂 .. = =
01/29 23:28, 7F

01/30 00:27, , 8F
用MSSP送Byte 0-2,當ISR到2之後用軟體再轉出6個bit
01/30 00:27, 8F

01/30 00:32, , 9F
如果是小弟的話會考慮直接使用GPIO自己寫SPI的protocal
01/30 00:32, 9F

01/30 00:43, , 10F
我想混搭MSSP最主要應該還是CPUTIME的問題,330是很快的
01/30 00:43, 10F

01/30 00:44, , 11F
一棵8051如果停下來送30個BIT要不就是太快要不就是浪費
01/30 00:44, 11F

01/30 21:31, , 12F
我想我應該會用刻gpio的方法
01/30 21:31, 12F

01/30 21:32, , 13F
w大的方法感覺很困難==
01/30 21:32, 13F

01/31 00:32, , 14F
直接用GPIO你程式會在輸出入時停住喔~ 沒採了330的速度呢
01/31 00:32, 14F

01/31 01:04, , 15F
要傳10bit,實際上我們會傳8bit+8bit(這8bit只有高位元
01/31 01:04, 15F

01/31 01:05, , 16F
效,後面6bit餵高電位,接收端自己會乖乖吃下去
01/31 01:05, 16F

01/31 01:06, , 17F
有些設備(如ADC類需要設定的)一樣都是這樣處理
01/31 01:06, 17F

01/31 01:09, , 18F
例如 ADS 10bit(1011011010) + Reg 10bit(0111100011)
01/31 01:09, 18F

01/31 01:10, , 19F
丟給我SPI就101101101 001111000 11111111(看你的SPI MODE
01/31 01:10, 19F

01/31 01:12, , 20F
至於多送會不會怎樣,很多設計都是沒收完全CS HIGH就當作
01/31 01:12, 20F

01/31 01:12, , 21F
沒這資料
01/31 01:12, 21F

01/31 21:35, , 22F
就多的就補1 送過去就對了 沒差哪多送的1?
01/31 21:35, 22F

01/31 21:37, , 23F
這樣在讀的時候 多送的垃圾值 不知道會不會當dummy data
01/31 21:37, 23F
文章代碼(AID): #1H1unERc (ASM)
文章代碼(AID): #1H1unERc (ASM)