cyrf6936程序Word下载.docx
- 文档编号:22329439
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:70
- 大小:30.24KB
cyrf6936程序Word下载.docx
《cyrf6936程序Word下载.docx》由会员分享,可在线阅读,更多相关《cyrf6936程序Word下载.docx(70页珍藏版)》请在冰豆网上搜索。
//writtenpermissionofCypress.
//Disclaimer:
CYPRESSMAKESNOWARRANTYOFANYKIND,EXPRESSORIMPLIED,
//WITHREGARDTOTHISMATERIAL,INCLUDING,BUTNOTLIMITEDTO,THEIMPLIED
//WARRANTIESOFMERCHANTABILITYANDFITNESSFORAPARTICULARPURPOSE.
//Cypressreservestherighttomakechangeswithoutfurthernoticetothe
//materialsdescribedherein.Cypressdoesnotassumeanyliabilityarising
//outoftheapplicationoruseofanyproductorcircuitdescribedherein.
//Cypressdoesnotauthorizeitsproductsforuseascriticalcomponentsin
//life-supportsystemswhereamalfunctionorfailuremayreasonablybe
//expectedtoresultinsignificantinjurytotheuser.Theinclusionof
//Cypress'
productinalife-supportsystemsapplicationimpliesthatthe
//manufacturerassumesallriskofsuchuseandindoingsoindemnifies
//Cypressagainstallcharges.
//UsemaybelimitedbyandsubjecttotheapplicableCypresssoftware
//licenseagreement.
//--------------------------------------
//Includedfiles
#include"
protocol.h"
lpradio.h"
//-------------------------------
//RXConfigurationregister
#defineANALOG_CTRL_ADR0x39
#defineANALOG_CTRL_RST0x00
#defineALL_SLOW_EN0x01
//ExternalAPItobeimplementedbycustomer
externvoidNotifyStartBind(void);
externvoidNotifyContinueBind(void);
externvoidNotifyStopBind(void);
externvoidNotifyStartPing(void);
externvoidNotifyStopPing(void);
externunsignedcharhandle_mouse_report(void);
externunsignedcharhandle_keyboard_report(void);
externvoidRetrieveSystemParameters(void);
externvoidStoreSystemParameters(void);
externvoidTimerDelay10usec(void);
externvoidTimerDelay50usec(void);
externvoidTimerDelay100usec(void);
externvoidTxRetryDelay(void);
externvoidTimerSetTimer(unsignedchartimeout_ms);
externunsignedcharTimerTimeOut(void);
externvoidTimerDelayMsec(unsignedshortnum_milliseconds);
externvoidDecryptData(void);
externvoidAES_Decrypt(void);
externvoidGenerateEncryptKey(void);
externvoidEncryptKey(void);
externunsignedcharEncryptRequestKey(void);
externvoidEncryptData(unsignedchardata_length);
externvoidNotifyDownloadBackChannelData(void);
//LocalFunctionDeclarations
staticvoidRadioCalculateNetworkId(void);
staticvoidRadioGetNextChannel(void);
staticvoidRadioSetPa(unsignedcharpa);
staticvoidRadioSetNonzeroCrcSeed(void);
staticunsignedcharRadioGetRxRssi(void);
staticvoidMasterProtocolProcessPacket(void);
staticunsignedcharMasterProtocolCheckRssi(void);
staticunsignedcharMasterProtocolGetNoiseRssi(void);
staticunsignedcharMasterProtocolDeviceTypeToBit(unsignedchardev_type);
staticvoidMasterProtocolHandleReport(unsignedchardev_type);
staticvoidRadioSetBackChannelCrcSeed(void);
staticvoidSlaveProtocolRetrieveBridgeMid(void);
staticvoidSlaveProtocolKissBind(unsignedchardev_type);
staticunsignedcharRadioSendPacket(unsignedcharretry,unsignedcharlength);
staticvoidRadioToggleDataMode(void);
//LocalGlobalDefinitions
externunsignedcharRadioXactConfig;
unsignedcharRadioTxConfig;
//LocalVariableDefinitions
//Systemparameters
SYS_PARAMETERSsys_params;
Receivepacket
LP_PACKETrx_packet;
Transmitpacket
LP_PACKETtx_packet;
#ifdefMASTER_PROTOCOL
//!
Receivedatatoggle
//bit0-fordevicetype0
//bit1-fordevicetype1
//bit2-fordevicetype2
//bit3-fordevicetype3
unsignedchardevice_data_toggle;
Datalengthforreceivedata
unsignedcharrx_data_length;
Receivesignalstrengthindicatorcounter
unsignedcharrssi_counter=0;
TotalReceivedPacketCount
unsignedshorttotal_received_packet_count=0;
unsignedcharlocal_total_received_packet_count=0;
BadReceivedPacketCount
unsignedshortbad_received_packet_count=0;
unsignedcharlocal_bad_received_packet_count=0;
#ifdefBACK_CHANNEL_SUPPORT
unsignedchartx_data_toggle=1;
#endif//BACK_CHANNEL_SUPPORT
unsignedcharback_channel_buffer[BACK_CHANNEL_PAYLOAD_LEN];
#else//MASTER_PROTOCOL
//Protocolconnectedstate
PROTOCOL_CONNECT_STATEconnected_state;
//Transmitpacketdatatoggle
#ifdefDYNAMIC_DATA_RATE_PA
externunsignedcharRadioRetryCount;
unsignedcharpkt_count=0;
unsignedchartotal_retry=0;
unsignedchartotal_retry_threshold=TOTAL_RETRY_THRESHOLD_LOW;
unsignedchartotal_retry_threshold_last=TOTAL_RETRY_THRESHOLD_LOW;
unsignedcharover_retry_count=0;
#endif//DYNAMIC_DATA_RATE_PA
#ifdefENCRYPT_TEA
unsignedcharencrypt_key_received;
#endif//ENCRYPT_TEA
unsignedcharrx_data_toggle=1;
#endif//MASTER_PROTOCOL
//*****************************************************************************
//*******************ForMasterProtocol***********************************
///////////////////////////////////////////////////////////////////////////////
//Function:
MasterProtocolInit
Description:
Callsradioinit,andfiguresdeviceparametersusing
algorithmstofindPNcode,channel,pin,andCRCseed
(basedofftheMID).Thedatatogglesgetsset.
Thenmakessureachannelisfoundatstartup.
Inputs:
Void
Returns:
voidMasterProtocolInit(void)
{
unsignedchartemp[6];
//ConfiguretheRadio
RadioTxConfig=DATA_MODE_PA_MAX|DATCODE_LEN_32|DATMODE_8DR;
RadioInit(ACK_EN|END_STATE_RX|ACK_TO_8X,RadioTxConfig);
//Enableallslowfordynamicdatarate.BecausethethemasterusesRXasendstate,thisbit
//canbeenabledforalldatamodewithoutaffectingthesystemperformance.
RadioWrite(ANALOG_CTRL_ADR,ALL_SLOW_EN);
//Configuretheframe
RadioSetFrameConfig(SOP_EN|LEN_EN|4);
//LoadthePreamblewith0x01
//Thisdesigndefaultstousing16-chipPreamble.The16chipPreamblesequence
//mayberepeatedmultipletimes(seeRegisterPREAMBLE_ADR).Thelonger
//Preambleallowsthereceiverambletimeto"
lock"
tothecomingsignal.Our
//testingshowsthat16-chipsequenceissufficient.
RadioSetPreambleCount(0x01);
//DisablePMU
RadioWrite(PWR_CTRL_ADR,0);
//RetrievethebridgeMID
//Setreceivelength
RadioSetLength(sizeof(rx_packet));
//Setbufferpointer
RadioSetPtr(temp);
//GetMID
RadioGetFuses();
sys_params.bridge_mid.mid_1=temp[0];
sys_params.bridge_mid.mid_2=temp[1];
sys_params.bridge_mid.mid_3=temp[2];
sys_params.bridge_mid.mid_4=temp[3];
//hashoutvaluesforPNCode,BaseChannel,andNetwork
//PINusingthesamealgorithmasalldevices
RadioCalculateNetworkId();
//Initializedevicedatatoggles
device_data_toggle=0xFF;
TimerSetTimer(QUICK_RSSI_TIMEOUT);
#ifdefPOWER_BIND
//Supporttwodevices
MasterProtocolButtonBindMode(MASTER_POWER_BIND_RETRY_COUNT);
#else
//alwaysfindachannelonstartup
MasterProtocolPingMode(PING_REASON_NORMAL);
#endif//POWER_BIND
#if(definedENCRYPT_TEA||definedKISS_BIND)
RetrieveSystemParameters();
#endif//(definedENCRYPT_TEA||definedKISS_BIND)
#ifdefKISS_BIND
//checkforuninitializedflash
if(sys_params.device_bound.signature!
=BIND_SIGNATURE&
&
sys_params.device_bound.bound_flg!
=0)
{
MasterProtocolUnbind();
}
#endif//KISS_BIND
}
MasterProtocolPin
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- cyrf6936 程序