日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]SI4438射頻模塊參數(shù):1、頻率范圍:425-525MHz2、數(shù)字接收信號(hào)強(qiáng)度指示(RSSI)3、64字節(jié)收發(fā)數(shù)據(jù)寄存器(FIFO)4、跳頻功能等!使用SI的WDS工具生成代碼1、 選擇仿真模式2、 芯片選擇si4438 B1模式3、 Radio Configura

SI4438射頻模塊參數(shù):

1、頻率范圍:425-525MHz

2、數(shù)字接收信號(hào)強(qiáng)度指示(RSSI)

3、64字節(jié)收發(fā)數(shù)據(jù)寄存器(FIFO)

4、跳頻功能

等!


使用SI的WDS工具生成代碼

1、 選擇仿真模式

2、 芯片選擇si4438 B1模式

3、 Radio Configuration Application

4、 Select Application




1、 Select Project

選擇Bidirectional packet ,雙向通信模式

2、 Configure project 配置工程

Frequency and power: 頻率和功率的設(shè)置,

base freq基頻,中心頻率,

Channel spacing 通道空間,某個(gè)通道回憶 base freq+ channel spacin*num 為頻率通信,當(dāng)然會(huì)有小浮動(dòng),但是浮動(dòng)不會(huì)超過(guò) Channel spacing。

計(jì)算通道號(hào)數(shù)量:

(Base freq + channel spacin*num) >=425MHz

(Base freq + channel spacin*num) <=525MHz


所以Base freq的設(shè)置以及channel spacing的設(shè)置會(huì)影響到通道的數(shù)量。

Crystal:晶振默認(rèn)!

其他的不動(dòng)

RF parameter



這里設(shè)置的射頻參數(shù),包括調(diào)制模式、數(shù)據(jù)速率等參數(shù),RSSI threshold設(shè)置信號(hào)閾值。數(shù)據(jù)速率射頻之間的距離有關(guān)系,速度越快,對(duì)應(yīng)的距離要求越短。所以這應(yīng)該按照自己的需求來(lái)選。




Pakect數(shù)據(jù)包的設(shè)置,包括TX和RX緩沖區(qū)的長(zhǎng)度、前導(dǎo)碼的配置Preamble、同步字的配置SyncWord、Field對(duì)應(yīng)負(fù)載的字節(jié)數(shù)據(jù),注意總的負(fù)載字節(jié)數(shù)為T(mén)X和RX閾值,具體分幾個(gè)fields看個(gè)人需求。



NIRQ配置成RX data output,即NIRQ和單片機(jī)引腳相連單片機(jī)可以通過(guò)該引腳判斷是否有數(shù)據(jù)接收。低電平有效!然后即可生成代碼!

生成的代碼是基于C8051F910單片機(jī)的,我們所用的是STM32,所以必須做好移植。

SPI移植:

不需要生成spi.c,建立STM32 SPI配置文件:


#include

#include"stm32f10x_spi.h"

#include"STM32SPI2.h"

u8STM32SPI2_ReadWriteByte(u8TxData)

{

u8retry=0;

while((SPI2->SR&1<<1)==0){

retry++;

if(retry>250)

return0;

}

SPI2->DR=TxData;

retry=0;

while((SPI2->SR&1<<0)==0)//

{

retry++;

if(retry>250)

return0;

}

returnSPI2->DR;

}

//APB2=72M/8=9M

voidSTM32SPI2_Config(void)

{

SPI_InitTypeDefSPI_InitStructure;

GPIO_InitTypeDefGPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

/*ConfigureSPI2pins:SCK,MISOandMOSI*/

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;

GPIO_Init(GPIOB,&GPIO_InitStructure);

/*ConfigureNSELpins*/

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;

GPIO_Init(GPIOB,&GPIO_InitStructure);

GPIO_SetBits(GPIOB,GPIO_Pin_12);

/*SPI2configuration*/

SPI_I2S_DeInit(SPI2);

RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2,ENABLE);

SPI_Cmd(SPI2,DISABLE);

SPI_InitStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex;

SPI_InitStructure.SPI_Mode=SPI_Mode_Master;

SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b;

SPI_InitStructure.SPI_CPOL=SPI_CPOL_Low;

SPI_InitStructure.SPI_CPHA=SPI_CPHA_1Edge;

SPI_InitStructure.SPI_NSS=SPI_NSS_Soft;

SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_128;//SPI_BaudRatePrescaler_64;

SPI_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB;

SPI_InitStructure.SPI_CRCPolynomial=7;

SPI_Init(SPI2,&SPI_InitStructure);

/*EnableSPI2*/

SPI_Cmd(SPI2,ENABLE);

STM32SPI2_ReadWriteByte(0xff);//啟動(dòng)傳輸

}

//í?ò?ê±?????üê1?üò???SPIéè±?,2?êyTYPE_SPI_ALL?TD§

voidSTM32SPI2_Enable(TYPE_SPItype)

{

/*

if(type==TYPE_SPI_FLASH)//這其實(shí)沒(méi)啥用

{

GPIO_SetBits(GPIOA,GPIO_Pin_4);//ê§?üRF

GPIO_ResetBits(GPIOC,GPIO_Pin_4);//ê1?üFLASH

}

else

{

*/

//GPIO_SetBits(GPIOC,GPIO_Pin_4);//ê§?üFLASH

GPIO_ResetBits(GPIOB,GPIO_Pin_12);//

/*

}

*/

}


voidSTM32SPI2_Disable(TYPE_SPItype)

{

if(type==TYPE_SPI_FLASH)

{

GPIO_SetBits(GPIOC,GPIO_Pin_4);//ê§?üFLASH

}

elseif(type==TYPE_SPI_RF)

{

GPIO_SetBits(GPIOB,GPIO_Pin_12);//ê§?üRF

}

else

{

GPIO_SetBits(GPIOC,GPIO_Pin_4);//ê§?üFLASH

GPIO_SetBits(GPIOA,GPIO_Pin_4);//ê§?üRF

}

}

radio.cradiohal層spi接口修改處

voidradio_hal_SpiWriteByte(u8byteToWrite)

{

STM32SPI2_ReadWriteByte(byteToWrite);

}

u8radio_hal_SpiReadByte(void)

{

returnSTM32SPI2_ReadWriteByte(0xFF);

}

voidradio_hal_SpiWriteData(u8byteCount,u8*pData)

{

while(byteCount--)

{

STM32SPI2_ReadWriteByte(*pData++);

}

}

voidradio_hal_SpiReadData(u8byteCount,u8*pData)

{

while(byteCount--)

{

*pData++=STM32SPI2_ReadWriteByte(0xFF);

}

}

Radio_Config:配置SDNpowerIRQ引腳

voidRadio_Config(void)

{

GPIO_InitTypeDefGPIO_InitStructure;

//oíFLASH12ó?ò???SPI,SPIò??-?úFLASHμ?3?ê??ˉ?Dμ÷ó?

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC,ENABLE);

//RF_POWER

GPIO_InitStructure.GPIO_Pin=RF_POWER_PIN;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(RF_POWER_PORT,&GPIO_InitStructure);

GPIO_SetBits(RF_POWER_PORT,RF_POWER_PIN);

//RF_ON

GPIO_InitStructure.GPIO_Pin = RF_

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉