国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

普冉PY32系列(九) GPIO模擬和硬件SPI方式驅(qū)動(dòng)無線收發(fā)芯片XL2400

這篇具有很好參考價(jià)值的文章主要介紹了普冉PY32系列(九) GPIO模擬和硬件SPI方式驅(qū)動(dòng)無線收發(fā)芯片XL2400。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

  • 普冉PY32系列(一) PY32F0系列32位Cortex M0+ MCU簡介
  • 普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode開發(fā)環(huán)境
  • 普冉PY32系列(三) PY32F002A資源實(shí)測 - 這個(gè)型號不簡單
  • 普冉PY32系列(四) PY32F002A/003/030的時(shí)鐘設(shè)置
  • 普冉PY32系列(五) 使用JLink RTT代替串口輸出日志
  • 普冉PY32系列(六) 通過I2C接口驅(qū)動(dòng)PCF8574擴(kuò)展的1602LCD
  • 普冉PY32系列(七) SOP8,SOP10,SOP16封裝的PY32F002A/PY32F003管腳復(fù)用
  • 普冉PY32系列(八) GPIO模擬和硬件SPI方式驅(qū)動(dòng)無線收發(fā)芯片XN297LBW
  • 普冉PY32系列(九) GPIO模擬和硬件SPI方式驅(qū)動(dòng)無線收發(fā)芯片XL2400

XL2400

前面介紹了 XN297LBW, 順帶再介紹一個(gè)非常類似的型號 XL2400, 生產(chǎn)商是深圳芯嶺技術(shù), 同時(shí)市面上還有一個(gè) WL2400, 從數(shù)據(jù)手冊看和 XL2400 是一模一樣的. XL2400 和XN297LBW 一樣都是 SOP8 封裝的2.4GHz頻段無線收發(fā)芯片, 但是零售價(jià)格更便宜, 在0.7元左右. 寄存器設(shè)置也存在大量 NRF24L01 的痕跡, 但是有一些區(qū)別.

產(chǎn)品頁地址: http://www.xinlinggo.com/pd.jsp?id=1

芯嶺對 XL2400 的介紹: "XL2400 系列芯片是工作在 2.400~2.483GHz 世界通用 ISM 頻段的單片無線收發(fā)芯片. 該芯片集成射頻收發(fā)機(jī)、頻率收生器、晶體振蕩器、調(diào)制解調(diào)器等功能模塊, 并且支持一對多組網(wǎng)和帶 ACK 的通信模式. 發(fā)射輸出功率、工作頻道以及通信數(shù)據(jù)率均可配置. 芯片已將多顆外圍貼片阻容感器件集成到芯片內(nèi)部. 容易過 FCC 等認(rèn)證."

XL2400 主要特性

  • 無線
    • 通信頻段:2.400GHz~2.483GHz
    • 數(shù)據(jù)速率:2Mbps,1Mbps,250Kbps,125Kbps
    • 調(diào)制方式:GFSK
  • 發(fā)射器
    • 輸出功率:最高8dBm
  • 接收器
    • -90dBm@2Mbps
    • -92dBm@1Mbps
    • -95dBm@250Kbps
    • -96.5dBm@125Kbps
  • 協(xié)議引擎
    • 支持最大數(shù)據(jù)長度為 128 字節(jié)(4 級 FIFO)
    • 支持一對多組網(wǎng)和帶 ACK 的通信模式
  • 電源管理
    • 工作電壓:1.7V~3.6V
    • 發(fā)射模式(0dBm)工作電流 13.7mA
    • 接收模式工作電流 12.3mA
    • 休眠電流 2uA
  • 主機(jī)接口
    • 支持3引腳SPI, SPI接口速率最高支持 4Mbps
  • 封裝
    • SOP8
    • 1M/2Mbps模式需要晶振精度 ±40ppm&C L =12pF
    • 125K/250kbps模式需要晶振精度 ±20ppm&C L =12pF
    • BLE 廣播包模式需要晶振精度 ±10ppm&C L =12pF
    • 工作溫度支持-40~+125℃

與XN297L相比

  1. 發(fā)射功率低2個(gè)dbm, 但是支持125Kbps速率, 有更高的靈敏度. 因?yàn)榇嬖谔摌?biāo)的可能性, 需要在實(shí)際使用中驗(yàn)證
  2. 4級FIFO, 最大數(shù)據(jù)長度128字節(jié), 支持更大的單組數(shù)據(jù)
  3. 支持BLE, 因?yàn)槭謨院蚐DK都未涉及這部分, 暫無法驗(yàn)證

PIN腳定義和應(yīng)用電路

PIN腳定義和應(yīng)用電路

XL2400 的PIN腳定義和 XN297LBW 是完全一樣的

普冉PY32系列(九) GPIO模擬和硬件SPI方式驅(qū)動(dòng)無線收發(fā)芯片XL2400

  • VDD 和 VSS 分別接 VCC 和 GND
  • XC1 和 XC2 接晶振
  • ANT 接天線
  • 用于MCU接口通信的只有 CSN, SCK 和 DATA 這三個(gè)PIN

推薦電路與XN297LBW相比更簡單. 實(shí)際上外圍電路只需要一個(gè)16MHz晶振.

普冉PY32系列(九) GPIO模擬和硬件SPI方式驅(qū)動(dòng)無線收發(fā)芯片XL2400

模塊實(shí)物

嘉立創(chuàng)打樣的測試模塊 (項(xiàng)目地址 https://oshwhub.com/iosetting/xn297lbw-xl2400-evb)

因?yàn)殡娐放cXN297LBW相似, 所以PCB通用, 只是焊接的元件有區(qū)別

普冉PY32系列(九) GPIO模擬和硬件SPI方式驅(qū)動(dòng)無線收發(fā)芯片XL2400

如果只是做驗(yàn)證, 可以用SOP8轉(zhuǎn)接板加焊一個(gè)16MHz晶振和一截 5~10cm 漆包線作為天線.

使用 PY32F0 驅(qū)動(dòng) XL2400

XN297L最新的SDK可以從芯嶺網(wǎng)站下載 下載地址 或者從百度網(wǎng)盤下載 下載地址. SDK中的例子使用GPIO模擬SPI方式進(jìn)行驅(qū)動(dòng). 但是實(shí)際上也可以通過硬件SPI方式進(jìn)行驅(qū)動(dòng).

硬件準(zhǔn)備

  • XL2400 模塊
  • PY32F002A/PY32F003/PY32F030 系列MCU的開發(fā)板, 建議在驗(yàn)證階段使用 20PIN 及以上封裝的型號, 避免PIN腳復(fù)用引起的干擾. 跑通后再遷移到低PIN型號
  • USB2TTL模塊, 用于觀察輸出
  • 以上硬件需要兩套, 測試中分別用于接收和發(fā)送

下面以PY32F002A為例. 代碼不需調(diào)整可以直接運(yùn)行于 PY32F003x 和 PY32F030x 系列的其它型號. 因?yàn)?XL2400 和 XN297LBW 的示例代碼幾乎是一模一樣, 就不仔細(xì)介紹了, 大部分代碼可以參考前面的 XN297LBW 的代碼說明, 只介紹有區(qū)別的地方.

GPIO模擬方式

接線

接線和XN297LBW一樣, 注意電源使用3.3V

PY32          XL2400 SOP8
PA1   ------> CLK/SCK
PA6   ------> CSN/NSS
PA7   ------> DATA/MOSI

              USB2TTL
PA2(TX) ----> RX
PA3(RX) ----> TX

代碼說明

XL2400 的初始化. 這部分與XN297LBW是有區(qū)別的. XL2400 的寄存器中存在大量多字節(jié)的設(shè)置項(xiàng), 設(shè)置時(shí)會(huì)需要先讀取再寫入

void XL2400_Init(void)
{
    // Analog config
    XL2400_ReadToBuf(XL2400_CMD_R_REGISTER | XL2400_REG_ANALOG_CFG0, xbuf, 13);
    *(xbuf + 4) &= ~0x04;
    *(xbuf + 12) |= 0x40;
    XL2400_WriteFromBuf(XL2400_CMD_W_REGISTER | XL2400_REG_ANALOG_CFG0, xbuf, 13);
    // Switch to software CE control, wake up RF
    XL2400_WakeUp();
    // Enable Auto ACK on all pipes
    XL2400_WriteReg(XL2400_CMD_W_REGISTER | XL2400_REG_EN_AA, 0x3F);
    // Enable all pipes
    XL2400_WriteReg(XL2400_CMD_W_REGISTER | XL2400_REG_EN_RXADDR, 0x3F);
    // Address Width, 5 bytes
    XL2400_WriteReg(XL2400_CMD_W_REGISTER | XL2400_REG_SETUP_AW, 0xAF);
    // Retries and interval
    XL2400_WriteReg(XL2400_CMD_W_REGISTER | XL2400_REG_SETUP_RETR, 0x33);
    // RF Data Rate 1Mbps
    XL2400_WriteReg(XL2400_CMD_W_REGISTER | XL2400_REG_RF_SETUP, 0x22);
    // Number of bytes in RX payload, pipe 0 and pipe 1
    *(cbuf + 0) = XL2400_PLOAD_WIDTH;
    *(cbuf + 1) = XL2400_PLOAD_WIDTH;
    XL2400_WriteFromBuf(XL2400_CMD_W_REGISTER | XL2400_REG_RX_PW_PX, cbuf, 2);
    // Dynamic payload width: off
    XL2400_WriteReg(XL2400_CMD_W_REGISTER | XL2400_REG_DYNPD, 0x00);
    // Other features
    //bit7&6=00 return status when send register address
    //bit5=0 long data pack off
    //bit4=1 FEC off
    //bit3=1 FEATURE on
    //bit2=0 Dynamic length off
    //bit1=0 ACK without payload
    //bit0=0 W_TX_PAYLOAD_NOACK off
    XL2400_WriteReg(XL2400_CMD_W_REGISTER | XL2400_REG_FEATURE, 0x18);
    // Enable RSSI
    *(cbuf + 0) = 0x10;
    *(cbuf + 1) = 0x00;
    XL2400_WriteFromBuf(XL2400_CMD_W_REGISTER | XL2400_REG_RSSI, cbuf, 2);
}

設(shè)置通信頻道

void XL2400_SetChannel(uint8_t channel)
{
    if (channel > 80) channel = 80;
    // AFC reset
    XL2400_WriteReg(XL2400_CMD_W_REGISTER | XL2400_REG_ANALOG_CFG0, 0x06);
    // AFC on
    XL2400_WriteReg(XL2400_CMD_W_REGISTER | XL2400_REG_ANALOG_CFG0, 0x0E);
    // Frequency(MHz) 2400:0x960 -> 2480:0x9B0
    *(cbuf + 0) = 0x60 + channel;
    *(cbuf + 1) = 0x09;
    XL2400_WriteFromBuf(XL2400_CMD_W_REGISTER | XL2400_REG_RF_CH, cbuf, 2);
    // AFC Locked
    *(cbuf + 1) |= 0x20;
    XL2400_WriteFromBuf(XL2400_CMD_W_REGISTER | XL2400_REG_RF_CH, cbuf, 2);
}

XL2400 的發(fā)送和接收函數(shù)和 XN297LBW 通用

完整代碼

XL2400 示例代碼的 GitHub 倉庫地址: https://github.com/IOsetting/py32f0-template/tree/main/Examples/PY32F0xx/LL/GPIO/XL2400_Wireless

運(yùn)行測試

修改 main.c 中的模式設(shè)置, 0為接收, 1為發(fā)送, 分別寫入至兩個(gè)PY32F002A開發(fā)板, 觀察UART的輸出.

// 0:RX, 1:TX
#define XL2400_MODE 0

接收端在每次接收到數(shù)據(jù)時(shí), 輸出第1,2,31個(gè)字節(jié)的值; 發(fā)送端每發(fā)送255組數(shù)據(jù)(每組32字節(jié))后, 會(huì)顯示發(fā)送成功的個(gè)數(shù)(十六進(jìn)制), 這個(gè)輸出可以用于計(jì)算發(fā)送成功率, 以及發(fā)送速度.

硬件SPI方式

接線

接線和XN297LBW的硬件SPI方式一樣, 使用4線制全雙工, PY32的MOSI和MISO都接到XL2400的DATA, 但是在MOSI(PA7)上串一個(gè)1K的電阻.

PY32                XL2400 SOP8
PA0   ------------> DATA/MOSI
PA7   ---> 1KR ---> DATA/MOSI
PA1   ------------> CLK/SCK
PA6   ------------> CSN/NSS

                    USB2TTL
PA2(TX) ----------> RX
PA3(RX) ----------> TX

代碼說明

參考XN297LBW的代碼說明, 兩者是一樣的.

完整代碼

XL2400 示例代碼的 GitHub 倉庫地址: https://github.com/IOsetting/py32f0-template/tree/main/Examples/PY32F0xx/LL/SPI/XL2400_Wireless

運(yùn)行測試

和GPIO模擬方式的一樣, 修改 main.c 中的模式設(shè)置, 0為接收, 1為發(fā)送, 分別寫入至兩個(gè)PY32F002A開發(fā)板, 觀察UART的輸出.

// 0:RX, 1:TX, 2:TX_FAST
#define XL2400_MODE 0

利用FIFO隊(duì)列提升發(fā)送速度

XL2400 也可以使用直接寫入 FIFO 隊(duì)列的方式提升發(fā)送速度, 發(fā)送相比普通發(fā)送方式有10%的性能提升.

在硬件SPI通信的示例中可以通過設(shè)置XL2400_MODE2可以啟用快速發(fā)送模式文章來源地址http://www.zghlxwxcb.cn/news/detail-710719.html

// 0:RX, 1:TX, 2:TX_FAST
#define XL2400_MODE 2

相關(guān)內(nèi)容

  • STC8H開發(fā)(十六): GPIO驅(qū)動(dòng)XL2400無線模塊
    這是去年寫的一篇STC8H驅(qū)動(dòng)XL2400的文章, 當(dāng)時(shí)還沒有跑通硬件SPI方式的驅(qū)動(dòng). 另外測試結(jié)論的性能偏低, 可能與8位MCU的性能有關(guān). 在PY32F002A上, 1Mbps速率時(shí)實(shí)測傳輸可以達(dá)到17KBps, 每秒17K字節(jié), 這個(gè)速度已經(jīng)可以傳輸雙聲道音頻了.

到了這里,關(guān)于普冉PY32系列(九) GPIO模擬和硬件SPI方式驅(qū)動(dòng)無線收發(fā)芯片XL2400的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 普冉PY32系列(三) PY32F002A 資源實(shí)測 - 這個(gè)型號不簡單

    普冉PY32系列(三) PY32F002A 資源實(shí)測 - 這個(gè)型號不簡單

    普冉PY32系列(一) PY32F0系列32位Cortex M0+ MCU簡介 普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode開發(fā)環(huán)境 普冉PY32系列(三) PY32F002A資源實(shí)測 - 這個(gè)型號不簡單 普冉PY32系列(四) PY32F002A/003/030的時(shí)鐘設(shè)置 普冉PY32系列(五) 使用JLink RTT代替串口輸出日志 普冉PY32系列(六) 通過I2C接口驅(qū)動(dòng)PCF8574擴(kuò)

    2023年04月19日
    瀏覽(56)
  • 普冉PY32系列(十四) 從XL2400遷移到XL2400P

    普冉PY32系列(十四) 從XL2400遷移到XL2400P

    普冉PY32系列(一) PY32F0系列32位Cortex M0+ MCU簡介 普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode開發(fā)環(huán)境 普冉PY32系列(三) PY32F002A資源實(shí)測 - 這個(gè)型號不簡單 普冉PY32系列(四) PY32F002A/003/030的時(shí)鐘設(shè)置 普冉PY32系列(五) 使用JLink RTT代替串口輸出日志 普冉PY32系列(六) 通過I2C接口驅(qū)動(dòng)PCF8574擴(kuò)

    2024年02月04日
    瀏覽(17)
  • 普冉PY32系列(十) 基于PY32F002A的6+1通道遙控小車I - 綜述篇

    普冉PY32系列(十) 基于PY32F002A的6+1通道遙控小車I - 綜述篇

    普冉PY32系列(一) PY32F0系列32位Cortex M0+ MCU簡介 普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode開發(fā)環(huán)境 普冉PY32系列(三) PY32F002A資源實(shí)測 - 這個(gè)型號不簡單 普冉PY32系列(四) PY32F002A/003/030的時(shí)鐘設(shè)置 普冉PY32系列(五) 使用JLink RTT代替串口輸出日志 普冉PY32系列(六) 通過I2C接口驅(qū)動(dòng)PCF8574擴(kuò)

    2024年02月05日
    瀏覽(20)
  • 普冉PY32系列(十一) 基于PY32F002A的6+1通道遙控小車II - 控制篇

    普冉PY32系列(十一) 基于PY32F002A的6+1通道遙控小車II - 控制篇

    普冉PY32系列(一) PY32F0系列32位Cortex M0+ MCU簡介 普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode開發(fā)環(huán)境 普冉PY32系列(三) PY32F002A資源實(shí)測 - 這個(gè)型號不簡單 普冉PY32系列(四) PY32F002A/003/030的時(shí)鐘設(shè)置 普冉PY32系列(五) 使用JLink RTT代替串口輸出日志 普冉PY32系列(六) 通過I2C接口驅(qū)動(dòng)PCF8574擴(kuò)

    2024年02月05日
    瀏覽(37)
  • stm32 GPIO模擬SPI接口實(shí)現(xiàn)雙機(jī)通信

    一、SPI協(xié)議簡介 ? ? 一般主從方式工作,這種模式通常有一個(gè)主設(shè)備和一個(gè)或多個(gè)從設(shè)備,通常采用的是4根線,它們是MISO(主機(jī)輸入從機(jī)輸出)、MOSI(主機(jī)輸出,針對主機(jī)來說)、SCLK(時(shí)鐘,主機(jī)產(chǎn)生)、CS(片選,一般由主機(jī)發(fā)送或者直接使能,通常為低電平有效) ●

    2023年04月08日
    瀏覽(18)
  • STM32的硬件SPI驅(qū)動(dòng)AD7124的方法

    STM32的硬件SPI驅(qū)動(dòng)AD7124的方法

    AD7124是一款適合高精度測量應(yīng)用的低功耗、低噪聲、完整模擬前端。該器件內(nèi)置一個(gè)低噪聲24位Σ-Δ型模數(shù)轉(zhuǎn)換器(ADC),可配置來提供8個(gè)差分輸入或15個(gè)單端或偽差分輸入。片內(nèi)低噪聲級確保ADC中可直接輸入小信號??捎糜跍囟葴y量、壓力測量、工業(yè)過程控制、儀器儀表和只能

    2024年02月07日
    瀏覽(173)
  • STM32F103硬件SPI驅(qū)動(dòng)ADS1256

    STM32F103硬件SPI驅(qū)動(dòng)ADS1256

    最近實(shí)驗(yàn)室有幾個(gè)項(xiàng)目都需要用到高分辨率AD轉(zhuǎn)換,于是就開始了ADS1256的開發(fā)。 新手,焊得丑,見諒(能用就行) 二: 本以為很容易就能做完,結(jié)果被采樣速率的問題困擾了很久。 代碼如下,使用2.5V基準(zhǔn)源進(jìn)行測試,結(jié)果在讀ADS時(shí)經(jīng)常出現(xiàn)讀出0xFFFFFF的情況,只能忍住悲傷

    2024年02月12日
    瀏覽(112)
  • stm32 hal庫硬件spi(軟件spi)驅(qū)動(dòng)1.8寸tft—lcd屏幕

    stm32 hal庫硬件spi(軟件spi)驅(qū)動(dòng)1.8寸tft—lcd屏幕

    屏幕是嵌入式開發(fā)中的一個(gè)重要的部分,cdsn上有許多解釋原理的,還有很多是采用正點(diǎn)原子的屏幕來驅(qū)動(dòng)的,對于剛剛?cè)腴T不久的我們可能沒有資金去購買較為昂貴的屏幕。而對于底層原理我們暫時(shí)也不必了解的那么深入,能點(diǎn)亮屏幕就是我們最大的快樂。 除了中景園的資

    2024年02月03日
    瀏覽(23)
  • STM32配合CubeMX硬件SPI驅(qū)動(dòng)0.96寸OLED

    STM32配合CubeMX硬件SPI驅(qū)動(dòng)0.96寸OLED

    目錄 一、簡單介紹 1.1 OLED 1.2 SPI協(xié)議 接口 優(yōu)點(diǎn) 缺點(diǎn) 數(shù)據(jù)傳輸 二、實(shí)戰(zhàn) 2.1 工程配置 2.2?測試工程 2.3 波形分析 三、驅(qū)動(dòng)OLED 3.1?初始化代碼 3.2 清屏函數(shù) 3.3 設(shè)置坐標(biāo)函數(shù) 3.4 顯示字符函數(shù) 3.5 顯示字符串函數(shù) 3.6 顯示圖片函數(shù) 附錄 驅(qū)動(dòng)代碼文件 oled.c oled.h f6x8.h 1.1 OLED 有機(jī)發(fā)

    2024年02月02日
    瀏覽(25)
  • 基礎(chǔ)篇010.2 STM32驅(qū)動(dòng)RC522 RFID模塊之二:STM32硬件SPI驅(qū)動(dòng)RC522

    基礎(chǔ)篇010.2 STM32驅(qū)動(dòng)RC522 RFID模塊之二:STM32硬件SPI驅(qū)動(dòng)RC522

    目錄 1. 實(shí)驗(yàn)硬件及原理圖 1.1 RFID硬件 1.2 硬件原理圖 2. 單片機(jī)與RFID硬件模塊分析 3. 利用STM32CubeMX創(chuàng)建MDK工程 3.1 STM32CubeMX工程創(chuàng)建 3.2 配置調(diào)試方式 3.3 配置時(shí)鐘電路 3.4 配置時(shí)鐘 3.5 配置GPIO 3.6 配置SPI 3.7 配置串口 3.8 項(xiàng)目配置 4. MDK工程驅(qū)動(dòng)代碼調(diào)試 4.1 按鍵、LED程序 4.1.1 Us

    2024年02月09日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包