Beaglebone讀取編碼器資料

2021-09-13 09:00:44 字數 3717 閱讀 3435

一般情況下,beaglebone black預設啟動兩個cape: 

1、bb-bone-emmc-2g 

2、bb-bonelt-hdmi

我們可以通過編輯uenv.txt的檔案來決定是否啟動hdmi,步驟如下 

1、載入啟動分割槽:

mkdir /mnt/sdcard

mount /dev/mmcblk0p1  /mnt/card

2、編輯uenv.txt

vim /mnt/card/uenv.txt

檔案內容如下

##these are needed to be compliant with angstrom's 2013.06.20 u-boot.

loadaddr=0x82000000

fdtaddr=0x88000000

rdaddr=0x88080000

initrd_high=0xffffffff

fdt_high=0xffffffff

##these are needed to be compliant with debian 2014-05-14 u-boot.

loadximage=load mmc 0:2 $ /boot/vmlinuz-$

loadxfdt=load mmc 0:2 $ /boot/dtbs/$/$

loadxrd=load mmc 0:2 $ /boot/initrd.img-$; setenv rdsize $

loaduenvtxt=load mmc 0:2 $ /boot/uenv.txt ; env import -t $ $;

check_dtb=if test -n $; then setenv fdtfile $;fi;

loadall=run loaduenvtxt; run check_dtb; run loadximage; run loadxrd; run loadxfdt;

mmcargs=setenv bootargs console=tty0 console=$ $ $ $ root=/dev/

mmcblk0p2 rootfstype=$ $

uenvcmd=run loadall; run mmcargs; bootz $ $:$ $;

在」mmcargs=setenv…」一行插入以下語句

optargs=quiet capemgr.disable_partno=bb-bonelt-hdmi,bb-bonelt-hdmin

儲存,退出

3、重啟

4、開機檢視slots已經變成了這樣:

root@beaglebone:~# cat $slots 

0: 54:pf--- 

1: 55:pf--- 

2: 56:pf--- 

3: 57:pf--- 

4: ff:p-o-l bone-lt-emmc-2g,00a0,texas instrument,bb-bone-emmc-2g

5: ff:p-o-- bone-black-hdmi,00a0,texas instrument,bb-bonelt-hdmi

6: ff:p-o-- bone-black-hdmin,00a0,texas instrument,bb-bonelt-hdmin

eqep 全稱enhanced quadrature encoder pulse 增強型正交編碼脈衝,也具有輸入的特性,設定gpio引腳模式為eqep1a_in或eqep1b_in,a和b是正交編碼的訊號輸入,或者是脈衝(a)和方向(b)的訊號輸入。

i是index,也就是零位訊號輸入,s是strobe,當這個引腳接受到上一級傳過來的正(或負)脈衝時,該器件開始工作,叫做選通脈衝。

eqep功能模組的輸入涉及4個gpio

am335x的pwmss分三個部分:

enhanced pwm module(epwm);

enhanced capture module(ecap);

enhanced quadrature encoder pulse module(eqep).

先載入pwm功能的裝置樹 echo am33xx_pwm > /sys/devices/bone_capemgr.9/slots

echo bone_eqep1 > /sys/devices/bone_capemgr.9/slots

然後載入eqep:beaglebone上sysfs條目的路徑是

/sys/devices/ocp.*/.epwmss/.eqep/

對於eqep 0,epwmss位址為48300000,eqep位址為48300180。

對於eqep 1,epwmss位址為48302000,eqep位址為48302180。

對於eqep 2,epwmss位址為48304000,eqep位址為48304180。

需要注意的是,beaglebone上只有eqep 1和eqep 2可用,而beaglebone black上提供了所有這三個版本。這是因為在原始beaglebone上,沒有為eqep0斷開編碼器時鐘輸入引腳之一。

如果使用eqep 1和/或2,則必須在beaglebone和beaglebone black上禁用hdmi,因為它們與lcd_資料線共享引腳。1、測試的編碼器為rotary增量式編碼器,共4根線(vcc、gnd、a相、b相);

2、選擇p8_35 eqep1a 和p8_33 eqep1b引腳,分別作為a、b相,vcc接p9_08的sys_5v,gnd接p9_02的gnd;

3、編寫程式讀取position的資料即可

#include #include#include#include#define encoderdata0  "/sys/devices/ocp.3/48302000.epwmss/48300180.eqep/"

#define encoderdata1  "/sys/devices/ocp.3/48302000.epwmss/48302180.eqep/"

#define encoderdata2  "/sys/devices/ocp.3/48304000.epwmss/48304180.eqep/"

#define max_line 100

struct encoderdata;

main(int argc, char **ar**)

stream1 = fopen(encoderdata1"position","r+");

if(!stream1)

stream2 = fopen(encoderdata2"position","r+");

if(!stream2)

fgets(p1.encoder1, max_line, stream);

fgets(p1.encoder2, max_line, stream1);

fgets(p1.encoder3, max_line, stream2);

fclose(stream);

fclose(stream1); 

fclose(stream2);

usleep(100000);

printf("\nthe current encoder  data is: %s, %s, %s\n",p1.encoder1,p1.encoder2,p1.encoder3);

}}

index編碼器 編碼器測量工具 主軸編碼器

德國vs sensorik編碼器為index車銑復合工具機標配編碼器 並可完全相容西門子 l b 海德漢等編碼器。dcmu 24p cnbo box 應用於工具機主軸編碼器訊號診斷 資料記錄及訊號校準的測量工具 僅使用一台膝上型電腦連線我們的編碼器測量工具裝置 dcmu box 就可以輕鬆對編碼器訊...

連線編碼器 編碼器原理及測量

編碼器及其應用概述 編碼器 encoder 是將訊號 如位元流 或資料進行編制 轉換為可用以通訊 傳輸和儲存的訊號形式的裝置。編碼器把角位移或直線位移轉換成電訊號,前者成為碼盤,後者稱碼尺。按照讀出方式編碼器可以分為接觸式和非接觸式兩種。接觸式採用電刷輸出,一電刷接觸導電區或絕緣區來表示 的狀態是 ...

正交編碼器

正交編碼器通過兩個脈衝訊號進行位置測量。該訊號可稱為訊號a 通道a 和訊號b 通道b 訊號a和訊號b的偏移量為90 用於確定編碼器移動的方向。例如,在角度正交編碼器中,如訊號a位於訊號b之前,則編碼器按順時針方向旋轉。反之,編碼器按逆時針方向旋轉。m系列 c系列和ni tio裝置上的計數器支援對x1...