ppi部分學習思維導圖
ppi實現的就是通過初始化配置,將不同外設的事件和任務連線起來,讓事件自動去觸發任務的功能,ppi有多個通道,
每個通道包含乙個eep和tep,使用ppi連線外設事件和外設任務的時候,將外設事件暫存器的位址寫入eep,將外設任務
暫存器的位址寫入到ppi通道的tep,然後使能該ppi通道即可實現外設事件和外設任務的連線。
ppi中的通道20和通道31已經被預程式設計,這些ppi通道已經分配給了特定的外設事件和外設任務,cpu不能對這些通道進行
配置,但是cpu可以把他們加入到ppi組,也可以使能或禁止這些ppi通道。
詳細見nrf52832資料手冊
如果需要乙個事件能同時觸發多個任務或者乙個任務能同時被多個事件觸發,可以通過ppi組來實現。
chen暫存器:使能或禁止ppi通道
chenset暫存器:用於使能ppi通道
chenclr暫存器:禁止ppi通道
uint32_t nrf_drv_ppi_init ( void )
ppi通道是由驅動來分配的,而不是應用程式指定的,當需要乙個ppi通道的時候,呼叫nrf_drv_ppi_channel_alloc()函式
該函式會查詢空閒的ppi通道,並將查詢到的第乙個ppi通道傳遞給函式的輸入引數p_channel
uint32_t nrf_drv_ppi_channel_alloc ( nrf_ppi_channel_t * p_channel )
uint32_t nrf_drv_ppi_channel_assign (
nrf_ppi_channel_t channel, //ppi channel to be assigned endpoints
uint32_t eep, //事件暫存器的位址
uint32_t tep //任務暫存器的位址
)
位址的獲得有兩種方式
(1)從晶元的應用指南中查到
(2)通過呼叫外設的驅動函式來獲得位址
如timer0的compare[0]事件暫存器位址獲得
__static_inline uint32_t nrf_drv_timer_event_address_get (
nrf_drv_timer_t const *const p_instance,
nrf_timer_event_t timer_event
)
uint32_t nrf_drv_ppi_channel_enable ( nrf_ppi_channel_t channel )
參考資料1 艾克姆科技 《nrf52832開發教程》 nRF52832 GPIOTE EVENT中斷使用
中斷相關函式見 core cm4.h 標頭檔案,例子 gpiote events en gpiote ch 1 使能gpioe通道1 gpiote events all en 使能所有event事件 nvic setpriority gpiote irqn,0 設定gpiote中斷等級 nvic e...
NRF51822和NRF52832的簡單介紹
1 功耗方面 nrf52832更是在nrf51822的基礎上簡直將功耗降低了一半 2 更好的rf體現,主要是發射功率和接納敏感度更好。發射功率,他哥倆適當,都是 4dbm nrf52832的靈敏度是 96dbm,nrf51822的接納靈敏度是 93dbm。3 更強的處理才能,nrf52832的處理器...
nrf52832增加串列埠功能
1,增加 define uart tx buf size 256 uart tx buffer size.define uart rx buf size 256 uart rx buffer size.void uart write uint8 t pdata,uint8 t length 2,ma...