Programable Peripheral Interconnect trên chip Bluetooth nRF52832

Programable Peripheral Interconnect (PPI) là chức năng nên chip Bluetooth nRF52832 cho phép một ngoại vi tự động tương tác với các ngoại vi khác sử dụng các task và event mà không cần sự can thiệp của CPU. Khai thác PPI giúp tăng tốc độ thực thi các công việc đồng thời tiết kiệm năng lượng.

Mỗi kênh PPI sẽ chứa một event end point – EEP và 2 task end point – TEP, trong đó TEP thứ hai được nối song song với TEP thứ nhất và đươc tạo ra khi ta cấu hình trên thanh ghi FORK. Do đó, Một kênh PPI có thể kết nối một event tối đa với hai task cùng một lúc.

Ta sẽ có tất cả 32 kênh PPI, trong đó có 20 kênh thông thường (từ kênh 0-19) và 12 kênh PPI đặc biệt – pre-programmed PPI (từ kênh 20-31).

Các kênh đặc biệt này sẽ có EEP và một TEP cố định bởi phần cứng nên sẽ không lập trình được thông qua CPU, nhưng kích hoạt/vô hiệu hóa được như các kênh PPI thông thường. Ngoài ra, ta vẫn có thể sử dụng được các FORK TEP cho các kênh này.

Các EEP và TEP của các kênh pre-programmed channels:

Bạn có thể kích hoạt hoặc vô hiệu hóa từng kênh PPI một cách độc lập hoặc nhiều kênh PPI được đã được nhóm trong một group (bạn có thể tạo được tối đa 6 Group).

Dưới đây là ví dụ khi ta sử dụng một nút bấm BUTTON1 và điều khiển LED1 và LED2 đồng thời.

Bước 1: Sử dụng thư viện nrf_drv_ppi.h để sử dụng ppi

 

Ngoài ra ta cũng sử dụng các thư viện cho gpiote.

Bước 2: Khởi tạo ppi và gpiote

Bước 3: Cấu hình các led và button qua hàm led_and_button_setup()

Ngoài việc cấu hình các Task toggle cho LED1 và LED2 và event khi nhận sườn xuống cho BUTTON1 (ở đây ta không cần hàm ngắt nên tại tham số thứ 3 trong hàm nrf_drv_gpiote_in_init ta sẽ gán là NULL)

…thì ta cần tạo ra 1 kênh ppi và lấy địa chỉ của các task và event

Bước 4: Gắn các địa chỉ của task và event vào PPI

Tại đây ta sẽ sử dụng TEP đầu tiên cho LED1 và FORK TEP cho LED2, EEP cho event của BUTTON1

Bước 5: Kích hoạt kênh PPI và các task, event

Vậy là bạn đã khởi tạo xong, kết quả như video sau: 

Theo dõi chuỗi hướng dẫn về Bluetooth Peripheral, Bluetooth Low Energy, Bluetooth Mesh tại đây

Chúc các bạn thành công! 
Nhóm TAPIT R&D