女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

nrf_serial庫(kù)的使用技巧

CHANBAEK ? 來(lái)源:EEMaker電子創(chuàng)客營(yíng) ? 作者:DK45王 ? 2023-10-24 14:33 ? 次閱讀

nrf_serial 庫(kù)是nordic封裝的比較上層的串口抽象層。可以支持多個(gè)串口,可以使用阻塞、中斷、DMA三種模式。接口API比較簡(jiǎn)單,但是在使用之前需要先進(jìn)行比較多的宏定義。

SDK_CONFIG使能配置

在sdk_config中使能如下配置

NRFX_UARTE_ENABLED
NRFX_UART_ENABLED
NRF_SERIAL_ENABLED

并把對(duì)應(yīng)的c文件添加到工程中,h頭文件路徑包含進(jìn)工程中

添加串口底層配置定義

#define UART_TX_PIN 5
#define UART_RX_PIN 6
NRF_SERIAL_DRV_UART_CONFIG_DEF(uart_drv_config,
                      UART_RX_PIN, UART_TX_PIN,
                      NRF_UART_PSEL_DISCONNECTED, NRF_UART_PSEL_DISCONNECTED,
                      NRF_UART_HWFC_DISABLED, NRF_UART_PARITY_EXCLUDED,
                      NRF_UART_BAUDRATE_115200,
                      UART_DEFAULT_CONFIG_IRQ_PRIORITY);

該配置主要是用來(lái)配置串口的引腳、波特率、中斷優(yōu)先級(jí)等和硬件配置相關(guān)的東西。

添加FIFO和BUFFER定義

#define SERIAL_FIFO_TX_SIZE 128
#define SERIAL_FIFO_RX_SIZE 256
NRF_SERIAL_QUEUES_DEF(serial_queues, SERIAL_FIFO_TX_SIZE, SERIAL_FIFO_RX_SIZE);
#define SERIAL_BUFF_TX_SIZE 1
#define SERIAL_BUFF_RX_SIZE 1
NRF_SERIAL_BUFFERS_DEF(serial_buffs, SERIAL_BUFF_TX_SIZE, SERIAL_BUFF_RX_SIZE);

這兩個(gè)東西很容易讓人分不清,為什么既要定義queue又要定義一個(gè)buffer,是不是有點(diǎn)重復(fù)?

這里的BUFFER實(shí)際上就是傳遞給了底層,在DMA模式下當(dāng)收到數(shù)據(jù)就直接把數(shù)據(jù)搬到了BUFFER里面。BUFFER定義的大小可以決定當(dāng)收到幾個(gè)byte以后會(huì)產(chǎn)生一個(gè)DMA中斷,通知到上層就是一個(gè)NRF_SERIAL_EVENT_RX_DATA事件。所以為了讓每接收一個(gè)byte會(huì)通知到上層來(lái),通常就把SERIAL_BUFF_RX_SIZE設(shè)置為1了。

每一次DMA中斷nrf_serial就會(huì)自動(dòng)從BUFFER中取出接收到的數(shù)據(jù),取出來(lái)的數(shù)據(jù)又會(huì)被寫(xiě)入到QUEUE中。應(yīng)用讀取接收到的數(shù)據(jù)實(shí)際上也就是從queue中提取出來(lái)了。

添加serial事件回調(diào)定義

static void uart_evt_handler_t(struct nrf_serial_s const * p_serial,nrf_serial_event_t event)
{
    if(event==NRF_SERIAL_EVENT_RX_DATA)
    {
    }
    else if(event==NRF_SERIAL_EVENT_FIFO_ERR)
    {
    }
    else if(event==NRF_SERIAL_EVENT_DRV_ERR)
    {
    }
}

前面的SERIAL_BUFF_RX_SIZE設(shè)置的是1,當(dāng)接收到一個(gè)byte就會(huì)產(chǎn)生一個(gè)NRF_SERIAL_EVENT_RX_DATA事件。收到的數(shù)據(jù)nrf_serial自動(dòng)的把數(shù)據(jù)存入到了queue中了。應(yīng)用可以在接收事件中立馬調(diào)用nrf_serial_read函數(shù)去讀取數(shù)據(jù),也可以放在app_scheduler中去

添加NRF_SERIAL定義

NRF_SERIAL_UART_DEF(serial_uarte, 0);
NRF_SERIAL_CONFIG_DEF(  serial_config, NRF_SERIAL_MODE_DMA,
                        &serial_queues, &serial_buffs, 
                        uart_evt_handler_t, NULL);

初始化nrf_serial

ret_code_t ret;
ret = nrf_serial_init(&serial_uarte, &uart_drv_config, &serial_config);
APP_ERROR_CHECK(ret);

當(dāng)初始化以后就直接打開(kāi)的接收功能,一旦有數(shù)據(jù)接收到就會(huì)產(chǎn)生事件。

發(fā)送數(shù)據(jù)接口函數(shù)

ret_code_t nrf_serial_write(nrf_serial_t const * p_serial,
                            void const * p_data,
                            size_t size,
                            size_t * p_written,
                            uint32_t timeout_ms);

接收數(shù)據(jù)接口函數(shù)

ret_code_t nrf_serial_read(nrf_serial_t const * p_serial,
                           void * p_data,
                           size_t size,
                           size_t * p_read,
                           uint32_t timeout_ms);

當(dāng)使用DMA模式的時(shí)候,該函數(shù)需要在收到接收事件以后再調(diào)用,直接從queue取出接收到的數(shù)據(jù)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 封裝
    +關(guān)注

    關(guān)注

    128

    文章

    8459

    瀏覽量

    144717
  • 中斷
    +關(guān)注

    關(guān)注

    5

    文章

    904

    瀏覽量

    42485
  • 串口
    +關(guān)注

    關(guān)注

    14

    文章

    1581

    瀏覽量

    78555
  • dma
    dma
    +關(guān)注

    關(guān)注

    3

    文章

    572

    瀏覽量

    102257
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    nRF24L01+ Altium Designer庫(kù)文件

    nRF24L01+ Altium Designer庫(kù)文件下載鏈接
    發(fā)表于 04-30 15:26

    在很多單片機(jī)調(diào)試通過(guò)的 NRF24L01庫(kù)

    最近看論壇,有些人調(diào)試這個(gè),很多的時(shí)候都不成功。所以共享一個(gè)自己使用的在很多MCU上調(diào)試通過(guò)的NRF24L01庫(kù)。這個(gè)庫(kù)是從mbed上移植過(guò)來(lái)的,相當(dāng)?shù)姆€(wěn)定。而且對(duì)于開(kāi)發(fā)者來(lái)說(shuō)使用起來(lái)也很簡(jiǎn)單。先看
    發(fā)表于 09-21 14:33

    NRF24L01P原理圖庫(kù)_PCB封裝庫(kù)資源下載

    NRF24L01P原理圖庫(kù),PCB封裝庫(kù)的資源下載PCB這個(gè)行業(yè)IPC標(biāo)準(zhǔn)化的NRF24L01P原理圖庫(kù),PCB封裝庫(kù)資源,此資料供大家一起學(xué)習(xí),探討制作封裝
    發(fā)表于 10-19 17:04

    STM32與NRF24L01是怎樣通過(guò)arduino庫(kù)進(jìn)行通信的

    STM32與NRF24L01是怎樣通過(guò)arduino庫(kù)進(jìn)行通信的?
    發(fā)表于 12-16 07:47

    如何將nRF24l01模塊與Arduino等微控制器平臺(tái)連接?

    使用 SPI 協(xié)議進(jìn)行通信,因此可以輕松與任何微控制器連接。使用Arduino變得容易得多,因?yàn)?b class='flag-5'>庫(kù)隨時(shí)可用。標(biāo)準(zhǔn)nRF24L01 模塊的引腳排列如下所示該模塊的工作電壓為1.9V至3.6V(通常為3.3V
    發(fā)表于 03-01 14:52

    請(qǐng)問(wèn)nRF52832能移植ARM的DSP庫(kù)嗎?

    nRF52832能移植ARM的DSP庫(kù)嗎?
    發(fā)表于 10-16 07:51

    Using the Serial Port on the M

    Using the Serial Port on the MAXQ610 Microcontroller Abstract: The MAXQ610 microcontroller
    發(fā)表于 08-13 12:05 ?1476次閱讀

    NRF905工作模式

    NRF905工作模式NRF905工作模式NRF905工作模式NRF905工作模式NRF905工作模式NR
    發(fā)表于 11-19 15:24 ?10次下載

    nrf51822_PRO_SCH_20141122

    nrf51822原理圖 nrf51822原理圖 nrf51822原理圖
    發(fā)表于 04-15 17:59 ?19次下載

    NRF24L01接收程序

    程序是NRF24L01接收程序 接收到字符顯示在OLED上面,包含庫(kù)文件非常簡(jiǎn)單易懂適合入門(mén)學(xué)習(xí)
    發(fā)表于 06-14 15:29 ?5次下載

    nRF24L01和nRF905、nRF401及nRF9E5單片無(wú)線收發(fā)芯片的資料合集

    本文檔的主要內(nèi)容詳細(xì)介紹的是nRF24L01和nRF905、nRF401及nRF9E5嵌入微處理器單片無(wú)線收發(fā)芯片的資料合集免費(fèi)下載包括了:Nordic中文選型手冊(cè),
    發(fā)表于 05-23 08:00 ?22次下載
    <b class='flag-5'>nRF</b>24L01和<b class='flag-5'>nRF</b>905、<b class='flag-5'>nRF</b>401及<b class='flag-5'>nRF</b>9E5單片無(wú)線收發(fā)芯片的資料合集

    AD7380/AD7381: What are the pros and cons of a Serial 2 wire mode and serial 1 wire mode?

    AD7380/AD7381: What are the pros and cons of a Serial 2 wire mode and serial 1 wire mode?
    發(fā)表于 02-02 09:24 ?14次下載
    AD7380/AD7381: What are the pros and cons of a <b class='flag-5'>Serial</b> 2 wire mode and <b class='flag-5'>serial</b> 1 wire mode?

    Mixly arduino nrf2401+對(duì)講機(jī)制作

    ;SPI.h>#include “nRF24L01.h”#include “RF24.h”用NRF2401+搞了個(gè)對(duì)講機(jī),搭建容易代碼簡(jiǎn)單。主要用的的是 RF24Audio 語(yǔ)音庫(kù)。需要元件一個(gè)功放模塊,麥克風(fēng)模塊 按鈕
    發(fā)表于 12-17 18:08 ?22次下載
    Mixly arduino <b class='flag-5'>nrf</b>2401+對(duì)講機(jī)制作

    NRF52840與NRF52832的性能區(qū)別

    藍(lán)牙版本的不斷更新,大部分客戶慢慢都向往著藍(lán)牙5.0。當(dāng)然對(duì)于前不久NORDIC剛出的藍(lán)牙5.0 nrf52840,很多人都還不是很了解。NRF52840可以說(shuō)是NRF52832的超強(qiáng)升級(jí)版,雖然
    的頭像 發(fā)表于 02-24 15:02 ?5507次閱讀

    NRF51822和NRF52832的主要區(qū)別

    對(duì)于NRF51822和NRF52832的選擇性相信大家也是非常困惑的,哪個(gè)性價(jià)比高?下面為大家講下NRF51822和NRF52832的一個(gè)區(qū)別,讓大家能夠更好的快速選型加快研發(fā)產(chǎn)品進(jìn)度
    的頭像 發(fā)表于 02-20 15:24 ?1531次閱讀