色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

nrf_serial庫的使用技巧

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

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

SDK_CONFIG使能配置

在sdk_config中使能如下配置

NRFX_UARTE_ENABLED
NRFX_UART_ENABLED
NRF_SERIAL_ENABLED

并把對應的c文件添加到工程中,h頭文件路徑包含進工程中

添加串口底層配置定義

#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);

該配置主要是用來配置串口的引腳、波特率、中斷優先級等和硬件配置相關的東西。

添加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,是不是有點重復?

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

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

添加serial事件回調定義

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設置的是1,當接收到一個byte就會產生一個NRF_SERIAL_EVENT_RX_DATA事件。收到的數據nrf_serial自動的把數據存入到了queue中了。應用可以在接收事件中立馬調用nrf_serial_read函數去讀取數據,也可以放在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);

當初始化以后就直接打開的接收功能,一旦有數據接收到就會產生事件。

發送數據接口函數

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);

接收數據接口函數

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);

當使用DMA模式的時候,該函數需要在收到接收事件以后再調用,直接從queue取出接收到的數據。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 封裝
    +關注

    關注

    128

    文章

    8459

    瀏覽量

    144719
  • 中斷
    +關注

    關注

    5

    文章

    904

    瀏覽量

    42487
  • 串口
    +關注

    關注

    14

    文章

    1581

    瀏覽量

    78556
  • dma
    dma
    +關注

    關注

    3

    文章

    572

    瀏覽量

    102257
收藏 0人收藏

    評論

    相關推薦
    熱點推薦

    nRF24L01+ Altium Designer文件

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

    在很多單片機調試通過的 NRF24L01

    最近看論壇,有些人調試這個,很多的時候都不成功。所以共享一個自己使用的在很多MCU上調試通過的NRF24L01。這個是從mbed上移植過來的,相當的穩定。而且對于開發者來說使用起來也很簡單。先看
    發表于 09-21 14:33

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

    NRF24L01P原理圖庫,PCB封裝的資源下載PCB這個行業IPC標準化的NRF24L01P原理圖庫,PCB封裝資源,此資料供大家一起學習,探討制作封裝
    發表于 10-19 17:04

    STM32與NRF24L01是怎樣通過arduino進行通信的

    STM32與NRF24L01是怎樣通過arduino進行通信的?
    發表于 12-16 07:47

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

    使用 SPI 協議進行通信,因此可以輕松與任何微控制器連接。使用Arduino變得容易得多,因為隨時可用。標準nRF24L01 模塊的引腳排列如下所示該模塊的工作電壓為1.9V至3.6V(通常為3.3V
    發表于 03-01 14:52

    請問nRF52832能移植ARM的DSP嗎?

    nRF52832能移植ARM的DSP嗎?
    發表于 10-16 07:51

    Using the Serial Port on the M

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

    NRF905工作模式

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

    nrf51822_PRO_SCH_20141122

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

    NRF24L01接收程序

    程序是NRF24L01接收程序 接收到字符顯示在OLED上面,包含文件非常簡單易懂適合入門學習
    發表于 06-14 15:29 ?5次下載

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

    本文檔的主要內容詳細介紹的是nRF24L01和nRF905、nRF401及nRF9E5嵌入微處理器單片無線收發芯片的資料合集免費下載包括了:Nordic中文選型手冊,
    發表于 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單片無線收發芯片的資料合集

    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?
    發表于 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+對講機制作

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

    NRF52840與NRF52832的性能區別

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

    NRF51822和NRF52832的主要區別

    對于NRF51822和NRF52832的選擇性相信大家也是非常困惑的,哪個性價比高?下面為大家講下NRF51822和NRF52832的一個區別,讓大家能夠更好的快速選型加快研發產品進度
    的頭像 發表于 02-20 15:24 ?1536次閱讀
    主站蜘蛛池模板: 97伦理电影在线不卡 | 高清日本片免费观看 | 大胸美女被C得嗷嗷叫动态图 | 牛牛在线精品视频 | 日本wwwxx爽69护士 | 久久精品亚洲热综合一本奇米 | 北条麻妃夫の友人196 | 成人免费看片45分钟 | 麻豆成人AV久久无码精品 | 成年妇女免费播放 | 暖暖在线观看播放视频 | 桃色园社区 | 久久精品中文字幕有码日本 | 国产电影午夜成年免费视频 | 全部免费特黄特色大片看片 | 91精品免费久久久久久久久 | 消息称老熟妇乱视频一区二区 | 国产精品-区区久久久狼 | 古月娜下面好紧好爽 | 果冻传媒2021一二三在线观看 | 日美欧韩一区二去三区 | 久久久久久久网站 | 最近中文字幕2018MV高清在线 | 国产精品一区二区AV交换 | 97人人看碰人免费公开视频 | 无人区日本电影在线观看 | 国产成人精品免费视频软件 | 18video性欧美19sex高清 | 亚洲A片不卡无码久久尤物 亚洲a免费 | 999久久久无码国产精蜜柚 | 迅雷哥在线观看高清 | 挠黑色超薄丝袜脚心vk40分钟 | 超碰98人人插| 国产成人无码精品久久久按摩 | 亚洲国产夜色在线观看 | 国产精品免费一区二区三区视频 | 一区二区三区毛AAAA片特级 | 亚州性夜夜射在线观看 | 午夜亚洲国产理论片二级港台二级 | 大桥未久电影在线观看 | 国产亚洲免费观看 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品