Kindle Fire Coupon Kindle Fire Coupon 2012 Kindle DX Coupon 2012 Kindle Fire 2 Coupon Amazon Coupon Codes 2012 Kindle DX Coupon PlayStation Vita Coupon kindle touch coupon amazon coupon code kindle touch discount coupon kindle touch coupon 2012 logitech g27 coupon 2012 amazon discount codes
Facebook RSS Reset

Giới thiệu thư viện bcm2835 và cách thức giao tiếp ngoại vi trên kit Raspberry pi

Đây là thư viện C cho Raspberry pi (viết tắt là RPI). Nó cung cấp các hàm để truy xuất đến GPIO và các IO khác trên nền tảng chip Broadcom BCM 2835, cho phép truy xuất đến các chân GPIO trên header 26 Pin do đó bạn có thể điều khiển và giao tiếp với các ngoại vi khác thông qua các chân này.

Nó cung cấp các hàm để đọc digital inputs và thiết lập digital outputs, sử dụng SPI và I2C, và cũng có thể truy xuất đến system timers.

Nó tương thích với C++,và cài đặt như là 1 header file và không phải là share library trên bất kỳ nền tảng linux nào (ngoại trừ RPI và các board sử dụng BCM 2835).

*Cài đặt thư viện :

# download the latest version of the library, say bcm2835-1.xx.tar.gz, then:

tar zxvf bcm2835-1.xx.tar.gz

cd bcm2835-1.xx

./configure

make

sudo make check

sudo make install

Hàm  bcm2835_peri_read(), bcm2835_peri_write()bcm2835_peri_set_bits() là các hàm cho phép truy xuất các thanh vi ngoại vi low level. Chúng được thiết kế để sử dụng địa chỉ vật lý được mô tả trong bảng 1.2.3 ARM physical addresses of the BCM2835 ARM Peripherals manual . Địa chỉ vật lý được sắp từ 0x20000000 to 0x20FFFFFF cho ngoại vi. Địa chỉ bus cho ngoại vi được thiết lập trên bản đồ địa chỉ bus ngoại vi bắt đầu từ  0x7E000000 . Như vậy một ngoại vi được giới thiệu trong manual tại một bus địa chỉ  0x7Ennnnnn là địa chỉ vật lý có giá trị  0x20nnnnnn.

Dựa trên địa chỉ của các thanh vi ngoại vi khác nhau thì có thể sử dụng các ngoại vi chức năng sau : bcm2835_gpio bcm2835_pwm bcm2835_clk bcm2835_pads bcm2835_spio0 bcm2835_st bcm2835_bsc0 bcm2835_bsc1

Pin Numbering

RPI có 1 header 26 pin cho phép truy xuất đến 1 vài GPIO trên BCM 2835 , cộng thêm vài chân nguồn và ground. Không phải tất cả các GPIO pin trên BCM 2835 đều nằm trên header này. RPI version 2 cũng có header P5 với 4 GPIO pin, 5V, 3.3V và GND.

FN1YEKZHN824U1E

Các hàm trong thư viện này được thiết kế qua BCM 2835 pin number chứ không phải là Rpi pin number. Xem thêm cách định nghĩa các pin này tại : http://www.airspayce.com/mikem/bcm2835/group__constants.html#ga63c029bd6500167152db4e57736d0939

SPI Pins

Các hàm bcm2835_spi_* cho phép bạn điều khiển giao tiếp với BCM 2835 SPI0, cho phép bạn gửi và nhận dữ liệu qua SPI (Serial Peripheral Interface).

Khi hàm bcm2835_spi_begin() được gọi nó sẽ thay đổi trạng thái trên chân giao tiếp SPI từ GPIO mặc định sang hỗ trỡ SPI. khi hàm bcm2835_spi_end()  được gọi thì các chân SPI sẽ được trả về trạng thái là input như ban đầu, và sau đó có thể được config và điều khiển thông thường qua các hàm bcm2835_gpio_*.

Các chân GPIO được sử dụng cho SPI :

  • P1-19 (MOSI)
  • P1-21 (MISO)
  • P1-23 (CLK)
  • P1-24 (CE0)
  • P1-26 (CE1)

I2C Pins

Các hàm bcm2835_i2c_*  cho phép bạn điều khiển gửi và nhận dữ liệu qua chuẩn I2C.  Các chân GPIO pin hỗ trợ I2C trên SPI gồm :

  • P1-03 (SDA)
  • P1-05 (SLC)

PWM

BCM2835 hỗ trợ hardware PWM trên 1 số GPIO pins. Thư viện bcm2835 này cung cấp các hàm để config và điều khiển PWM thông qua các chân này.  BCM 2835  có  2 kênh  PWM là  0 và 1.

Leave a comment

No comments yet.

Leave a Comment