#請益 有關位元問題請教

3月31日 13:54
你好,想請教一下專題有使用到fpga,是12位元這樣傳值,因為我想透過藍芽模組把值收進到pc端,目前知道藍芽是8bits傳值的,有什麼辦法可以把fpga的數值傳回來收到且是正確的數值呢? 麻煩各位了!
0
回應 11
文章資訊
共 11 則留言
國立聯合大學
聽不懂你的問題 系統架構圖可以給一下嗎? 裝置之間怎麼連結的? 用什麼介面? 是fpga加藍牙連到PC嗎? 如果是 你可以自己修改Fpga,用硬體描述語言,設計異質整合的通訊介面,通訊協定、數值定義清楚就可以在不同介面跟數值表示方式之間互轉。
國立虎尾科技大學
那8Bits預設是拿來傳字元資料的,拿來傳數值資料會很麻煩。 妳的12位元如果是數字的話,一般來說會先轉成十進制, 然後一個位數一個位數的轉成ASCII code才透過藍牙模組傳輸
B1 B2你好👋目前我做的地方是把adc取樣後的12位元的資料,透過uart藍芽傳輸到我電腦然後呈現數值。 是一個Arm+fpga雙核心開發版,收值完經過取樣後會透過藍芽模組,傳送到我pc,用labview顯示。 現在我卡住的點是,12位元的資料寬度,我不會把他變成uart8位元可以讀取到,聽指導教授說需要自己寫一個通訊編碼方式,但我對於這塊真的不熟,第一次碰就要寫這個... 希望我寫出一個表,讓大家知道說我是怎麼做編碼的
國立聯合大學 電子工程研究所
B3 12bit 分兩次傳,第一次位元傳11bit ~ 8bit的資料 第二次傳7bit ~ 0bit 資料 UART的格式大概就是 1 byte : 0000DDDD 2 byte: DDDDDDDD (D表示你的資料 0代表該位元為零) 到接收端再把兩筆還原就好。
B4 可以請教一下,因為之後uart會接收端值不只有adc的還會有像座標值這些數值,用您所說的這個方法,還是一樣可以傳嗎🙏🙏
國立聯合大學
B5 不懂你的問題
B6 因為之後可能還會接收別的位元值的資料,我如果他是8位元,我就令他直接傳,若是12位元的就使用像您這樣的方式傳送嗎
國立聯合大學
B7 當然可以 程式是你寫的 簡單的作法就是在每次uart 傳送的時候多加一個byte來識別是哪一種格式的資料。
B8 請問這邊多加一個byte是什麼意思?🤔🤔
B8
這樣的編碼可以嗎 有關x座標跟y座標的, 這樣的方式似乎跟您敘述的不同了,這是我一開始寫的,以x 座標data1來說,0101像是檢查碼 後面1~4位元是我的資料,data2也是,我的想法是之後接收端這邊在做合併,不曉得這樣是不是也行的通,跟你的那種方式哪個比較方便簡單呢
integer 的大小有分 uint8_t, uint16_t, uint32_t,而一個 byte 等同於 uint8_t,uint8_t的最大值就是 255 而已,所以 12 位元的數字要分兩個byte 傳輸,分別是「Low byte and High byte」。 假設今天我要傳輸數字為 512: int a = 512; byte lowByte = a & 0xff; byte highByte = (a >> 8) & 0xff; 然後傳到另一邊之後就要進行組合: int b = lowByte; b |= (int)highByte << 8; b 就是之前就數字(a)啦