在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

nrf_serial庫的使用技巧

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

nrf_serial 庫是nordic封裝的比較上層的串口抽象層??梢灾С侄鄠€串口,可以使用阻塞、中斷、DMA三種模式。接口API比較簡單,但是在使用之前需要先進(jìn)行比較多的宏定義。

SDK_CONFIG使能配置

在sdk_config中使能如下配置

NRFX_UARTE_ENABLED
NRFX_UART_ENABLED
NRF_SERIAL_ENABLED

并把對應(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);

該配置主要是用來配置串口的引腳、波特率、中斷優(yōu)先級等和硬件配置相關(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);

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

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

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

添加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)接收到一個byte就會產(chǎn)生一個NRF_SERIAL_EVENT_RX_DATA事件。收到的數(shù)據(jù)nrf_serial自動的把數(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)初始化以后就直接打開的接收功能,一旦有數(shù)據(jù)接收到就會產(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ù)需要在收到接收事件以后再調(diào)用,直接從queue取出接收到的數(shù)據(jù)。

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

    關(guān)注

    128

    文章

    8561

    瀏覽量

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

    關(guān)注

    5

    文章

    904

    瀏覽量

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

    關(guān)注

    14

    文章

    1586

    瀏覽量

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

    關(guān)注

    3

    文章

    573

    瀏覽量

    102403
收藏 人收藏

    評論

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

    nRF24L01+ Altium Designer文件

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

    在很多單片機(jī)調(diào)試通過的 NRF24L01

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

    NRF24L01P原理圖庫_PCB封裝資源下載

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

    STM32與NRF24L01是怎樣通過arduino進(jìn)行通信的

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

    如何將nRF24l01模塊與Arduino等微控制器平臺連接?

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

    請問nRF52832能移植ARM的DSP嗎?

    nRF52832能移植ARM的DSP嗎?
    發(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 ?1480次閱讀

    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上面,包含文件非常簡單易懂適合入門學(xué)習(xí)
    發(fā)表于 06-14 15:29 ?5次下載

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

    本文檔的主要內(nèi)容詳細(xì)介紹的是nRF24L01和nRF905、nRF401及nRF9E5嵌入微處理器單片無線收發(fā)芯片的資料合集免費(fèi)下載包括了:Nordic中文選型手冊,
    發(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單片無線收發(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+對講機(jī)制作

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

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

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

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

    對于NRF51822和NRF52832的選擇性相信大家也是非常困惑的,哪個性價比高?下面為大家講下NRF51822和NRF52832的一個區(qū)別,讓大家能夠更好的快速選型加快研發(fā)產(chǎn)品進(jìn)度
    的頭像 發(fā)表于 02-20 15:24 ?1567次閱讀
    主站蜘蛛池模板: 香蕉午夜视频 | 国产理论最新国产精品视频 | 免费在线亚洲 | 久久成人综合网 | 精品一区二区国语对白 | 午夜.dj高清在线观看免费8 | 九九热在线视频观看 | 精品综合久久88色鬼首页 | 日本大黄在线观看 | 一级待一黄aaa大片在线还看 | a天堂中文在线官网 | 在线观看www妖精免费福利视频 | 殴美一级| 亚洲大成色www永久网址 | 毛片爱爱| 免费a级午夜绝情美女视频 免费jlzzjlzz在线播放视频 | 日韩一区二区视频在线观看 | 日本三级日本三级人妇三级四 | 夜夜草天天干 | 色之综合天天综合色天天棕色 | 在线播放91灌醉迷j高跟美女 | 欧美五月激情 | 五月综合激情 | 一区二区三区国模大胆 | 日本一区二区在线免费观看 | 视频在线观看免费网址 | 国产色丁香久久综合 | 欧美综合成人网 | 九九热在线免费 | 午夜小视频男女在线观看 | 一级日本大片免费观看视频 | 久草视频在线免费看 | 亚洲图片 欧美色图 | 亚洲欧美在线一区 | 香蕉爱爱视频 | 天天射天天干 | 亚洲三级在线免费观看 | 国模视频在线 | 日本资源在线观看 | 欧美一级黄色录相 | 网站在线观看你懂的 |