ImageVerifierCode 换一换
你正在下载:

IAR.docx

[预览]
格式:DOCX , 页数:49 ,大小:641.03KB ,
资源ID:10592146      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10592146.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(IAR.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

IAR.docx

1、IAR文档信息Basic RF Testing of CCxxxx Devices.pdf物理特性演示CC253x4x User Guide. (Rev. C).pdf数据手册CC2530 Development Kit User Guide.pdf器件连接,驱动安装,代码演示,和电路图CC2530 Software Examples.pdf如何创建工程,下载程序,和DEMO讲解cc2530_Data_Manual.pdf数据手册CC2530DK Quick Start Guide.pdf熟悉产品的组装和操作显示CC2530ZDK Development Kit User Guide.pdf软

2、件包用户向导CC2530ZDK Quick Start Guide.pdf和CC2530DK Quick Start Guide.pdf有点类似IAR IDE User Manual.pdf简单的创建工程和简单的DEBUG,有些数据存储原理linux-stm3220g-eval-bspg-1.3.1.pdfSmartRF05 Evaluation Board User Guide.pdf安装驱动和2531连接,电路原理图,比较详细SmartRF Flash Programmer User Manual.pdf很详细的介绍创建工程SmartRF Studio Software Manifest.

3、pdf软件清单说明SmartRF_Studio_7_Overview.pdfStudio的使用和原理SmartRF_Studio_7_Tutorial.pdf详细的SmartRF_Studio_7_Overview.pdfswra290.pdfMAC层介绍swra308a.pdf电路原理和数据Using UART in CC2530.pdf串口的使用和原理ZigBee Sensor Monitor.pdfSensor的使用ZigBee_Sensor_Monitor_User_Guide.pdfSensor的安装软件包信息swrc044p.zip烧写软件包swrc045v.zipSniffer软

4、件包swrc096e.zipSensor组网调试软件包swrc126g.zipZstack软件包swrc135b.zip驱动层的RF演示代码swrc147c.zipSonser组网演示代码swrc155b.zipMACswrc176n.zipStudio演示调试软件组装设备将P8调到ON,跳线P11为USB/DC跳线P13跳线P15P14调到DisableP19调到SOC/TRX用USB线连接CC2530和PC,测试工具的使用1 smartRF studio 7在将2个CC2530EB连接到PC后,备注Sensor demo必须放到C:Texas InstrumentsZStack-CC253

5、0-2.5.1aProjectszstackSamplesSensorDemoCC2530DB才可以运行IAR使用IAR安装:首先查看系统中是否安装了IAR,如果有,请在WINDOWS的程序管理中将其卸载,首先下载软件包,IAR有对不同的设备提供不同的软件包,这里需要的是8051的编译器,安装没说明好说的,windows安装软件都是傻瓜式的一路下一步,最后就是注册,如果不注册有代码长度的限制,这里使用的是IAR FOR 8051 V7.60.1网上有对应的注册机编译DEMO代码:打开swrc135b/ide/cc2530_sw_example.eww右键项目,option,linker,con

6、fig标签下,override default浏览你的C:Program FilesIAR SystemsEmbedded Workbench 6.08051configdevicesTexas Instrumelnk51ew_cc2530F256.xcl选中你的版型,右键项目,option,linker, Extra Output, Override default, 写入你的生成HEX文件名右键项目,rebuild all, 在你的该项目下会生成HEX文件下载程序打开FLASH PROGRAMMER,选中program CCxxxx SoC or MSP430,在System-on-Chi

7、p标签下会有当前连接到PC的所有板子,在Flash image选中你的HEX文件,Actions选中Erase, program and verify点击perform actions程序就开始烧写到板子上自己创建工程:1,打开IAR2,Project, Create New Project, 选择你的编译工具链-Tool chain,这里只有8051,3,选中Empty project,点OK,这是叫你选择保存的工程名和路径,4,右键工程,选option,选General Options, 在Target标签下,Device我们选择我们的芯片类型CC2530F256,CPU CORE就选择P

8、lain Code model, Near意思是不需要BANK支持,只需要64Kb的Flash内存,CC253XF32和CC253XF64必须选这个,但是CC253XF128和CC253XF256也可以选这个选项,如果想访问CC253XF128和CC253XF256的所有FLASH就要选择BANKED, 选择Data model为Large,这里是告诉编译器如何使用8051的内存存储变量,small-DATA memory space, large-XDATA,访问DATA的速度快,但是容量内有XDATA大, Number of virtual 设置 8,是否有额外的堆栈,设置没有,Calli

9、ng convention 选择XDATA stack reentrant,选择RAM memory堆栈:选择do not use externed stacksCalling convention:xdata stack reentrantLocation for constants and str 选RAM在data pointer标签下Number of dptrs选1Page register addr 写0xa0在code bank标签下 如果选择了banked的代码模式,需要增加一些设置,number of banks : 0x07(CC2530设置7个code bank访问256

10、KB FLASH,也适用于128KB), register address : 0x9f(CC2530 FMAP 寄存器,控制CODE BANK在8051中的地址映射,低3位代表bank数), register mask : 0xff, bank start : 0x8000, bank end : 0xffff在output标签下Output file 选executable我们要的是执行文件,如果要链接库就选libraryOutput dir的3个分别是执行文件,中间目标文件,编译MAP文件的存放路径在library configuration标签下,选择你的编译库,一般不会动去,选cli

11、b就好了在library option标签下设置输出格式和输入格式在stack/heap标签下设置堆栈大小选C/C+ compiler选中Mutilfile compliation 和discard unused publics10,在language标签下选择编译语言和编译格式等在code标签下不知道做什么的在optimizations标签下选择HIGH-SIZE,去掉code motion在output标签下选中generate debug informat在list标签下不知道干什么的在preprocessor标签下Additioal include directories加入你的文件搜

12、索路径: $PROJ_DIR$/./././source/Components/utilsPreinclude : 预加载文件defined symbols: 预加载符号比如chip=2530表示定义了个宏chip,值等于2530在diagnostics标签下不知道干什么的在extra options标签下不知道干什么的选Assembler:汇编的东西选custom build:选build actions:选linker在config标签下,打开override default选择你的芯片类型打开override default program选中default by applicat在ou

13、tput标签下设置你的输出文件,如果选中了allow c-spy-specific extra output file ,extra output就可输入了在extra output标签下选中Gererate extern output file 选中override default,输入你的HEX文件名,output format : 选择intel-extended, format variant 选择NONE,在list标签下不知道在extra options标签下勾选use command line options输入 -C $PROJ_DIR$EndDevice-Pro.lib调试:

14、F5快速运行,F10,跳过运行F11,单步运行ZStack的SampleApp-DemoEB需要修改下TOOLS下的F8W2530.XCL,这个的-M(CODE)(_CODEBANK_START+_FIRST_BANK_ADDR)-(_CODEBANK_END+_FIRST_BANK_ADDR)*_NR_OF_BANKS+_FIRST_BANK_ADDR=0x8000注释去掉,这样就可以使用BANK空间了Light_switch-srf05_cc2530代码注释首先找到入口main:application下的light_switch.c里的mainuint8 appMode = NONE; /

15、保存运行的事发送端还是接收端basicRfConfig 是一个配置结构体,配合他的协议层需要Myaddr是Panid是一个建网的标识Channel是选用的频率频道ackRequse是否需要回应Halboardinit 主板初始化时钟,LED, 按钮,摇杆,LCD和总中断halJoystickInit 摇杆初始化,和Halboardinit有重复halRfInit 射频初始化:需要应答和CRC校验,设置寄存器,开启中断(硬件层的操作)halLedSet(1);LED1亮utilPrintLogo(Light Switch);通过halLcdWriteLine输出while (halButtonP

16、ushed()!=HAL_BUTTON_1);等待按钮按下halMcuWaitMs(350);通过nop操作等待350MShalLcdClear();清空LCDappMode = appSelectMode();摇杆选择后获取用户选择的模式appSwitchpTxData0 = LIGHT_TOGGLE_CMD;给发送缓冲区赋值basicRfConfig.myAddr = SWITCH_ADDR;赋值自己的地址basicRfInit(&basicRfConfig)初始化RF,这里主要是协议层设置,并设置回调函数,并设置频道频率basicRfReceiveOff();关闭接受halJoystic

17、kPushed()等待摇杆basicRfSendPacket(LIGHT_ADDR, pTxData, APP_PAYLOAD_LENGTH);发送数据,LIGHT_ADDR对方地址,pTxData数据地址,APP_PAYLOAD_LENGTH数据长度halMcuSetLowPowerMode(HAL_MCU_LPM_3);睡眠模式3在中断的时候会醒来applightwhile(!basicRfPacketIsReady();等待完整的数据包到来basicRfReceive(pRxData, APP_PAYLOAD_LENGTH, NULL)取出字符串到pRxData中,最大取APP_PAYL

18、OAD_LENGTH字节,NULL是返回信号强度,(这里为什么可以用NULL不会出错)halRfRxInterruptConfig设置中断回调处理函数,这里就pfISR= pf;然后我去查找pfISR,发现pfISR在一个HAL_ISR_FUNCTION函数中被执行查找HAL_ISR_FUNCTION被调用的地方,发现HAL_ISR_FUNCTION没有被调用的地方,他是一个宏#define HAL_ISR_FUNCTION(f,v) HAL_ISR_FUNC_PROTOTYPE(f,v); HAL_ISR_FUNC_DECLARATION(f,v)这2个也是宏#define HAL_ISR_

19、FUNC_DECLARATION(f,v) _PRAGMA(vector=v) _near_func _interrupt void f(void)#define HAL_ISR_FUNC_PROTOTYPE(f,v) _PRAGMA(vector=v) _near_func _interrupt void f(void)网上查找,说这个是中断必须按他的格式写,仔细思考了下,就是一个申明,一个实现V是中断号,f是函数名,所以不想一般的宏定义,f和v都不在函数中出现,在整个DEMO中就接受中断和PORT0PORT2中断处理函数basicRfRxFrmDoneIsr接收中断处理函数pHdr= (b

20、asicRfPktHdr_t*)rxMpdu;缓冲区结构化halRfDisableRxInterrupt();不允许接受中断嵌套halIntOn();允许其他中断嵌套(在进来前是开着总中断的,不然怎么进来)halRfReadRxBuf(&pHdr-packetLength,1);读取第1个字节,代表长度pHdr-packetLength &= BASIC_RF_PLD_LEN_MASK;忽略高字节,因为FIFO位128字节if (pHdr-packetLength = BASIC_RF_ACK_PACKET_SIZE)如果是5个字节的长度就是应答包rxi.length = pHdr-packe

21、tLength - BASIC_RF_PACKET_OVERHEAD_SIZE;用户层数据长度要扣掉包头9个字节和后面2个字节的CRChalRfReadRxBuf(&rxMpdu1, pHdr-packetLength);读取包头+包体rxi.ackRequest = !(pHdr-fcf0 & BASIC_RF_FCF_ACK_BM_L);判断是否需要回复rxi.pPayload = rxMpdu + BASIC_RF_HDR_SIZE;指向payload层rxi.rssi = pStatusWord0;获取信号强度if( (pStatusWord1 & BASIC_RF_CRC_OK_BM

22、) & (rxi.seqNumber != pHdr-seqNumber) )如果CRC校验对,并且序列号对if ( (pHdr-fcf0 & (BASIC_RF_FCF_BM_L) = BASIC_RF_FCF_NOACK_L) )不需要回复halIntOff();关闭总中断源(这里不理解,这样怎么发生中断)halRfEnableRxInterrupt();重新开启RF接受中断Per_test代码注释Hal_timer_32k.c/初始化通过CLKCONCMD.TICKSPD获取定时器最大频率设置预分频T1CTL.DIV,T1CTL.MODE=00,暂停计数,1-free,2-re 3-up

23、T1CCTL0-4.MODE=0采集,=1比较T1CCTL0-4.CMP和CAP设置TIMIF.OVFIM = 1; T1CCTL0-4.IM=1IEN1.T1IE = 1;IEN0.EA = 1;/开始T1CC0H:T1CC0L设置溢出值T1CNTL=任何数,置0X0000T1CTL.MODE设置/中断中T1STAT.OVFIF = 0, T1STAT.CH4IF=0/清除IRCON.T1IF = 0;通过T1CNTH:T1CNTL读取/关闭T1CTL.MODE=00TIMIF.OVFIM = 0; T1CCTL0-4.IM=0IEN1.T1IE = 0;IEN0.EA = 0;在测试RF的

24、性能时可以使用输入比较来获取时间数据手册2.2 memoryCode: 只读空间,64KBData: 可读写空间,1个周期访问,256B, 前128B可直接访问,后128B间接访问Xdata: 可读写空间,4-5个周期访问,64KBSfr: 可读写空间,1个周期访问,128B2.2.32.42.5CPU有18个中断源其中RFERR中断是缓冲区越界了,中断掩码寄存器IEN0(0XA8)7 : EA : 中断总开关6 : RES : 始终0 5 : STIE : 睡眠定时器掩码4 : ENCIE : AES 加密/解密掩码 3 : URX1IE : USART1接收掩码2 : URX0IE : U

25、SART0接收掩码1 : ADCIE : ADC掩码0 : RFERRIE : RF错误掩码IEN1(0xB8)7 : RES : 06 : RES : 05 : P0IE : PORT0掩码4 : T4IE : 定时器4掩码3 : T4IE : 定时器3掩码2 : T4IE : 定时器2掩码1 : T4IE : 定时器1掩码0 : DMAIE : DMA掩码IEN2(0x9A)7 : RES : 06 : RSE : 05 : WDTIE : 看门狗掩码4 : P1IE : PORT1掩码3 : UTX1IE : USART1发送掩码2 : UTX0IE : USART0发送掩码1 : P2

26、IE : USB掩码0 : RFIE : RF掩码在一个中断发生的时候,我们也许不知道到底什么事情发生了,比如rf中断发生了,那是发送完成了呢,还是接受完成了,我们还需要一个标志位TCON(0x88)7 : URX1IF : USART1接受中断6 : RES : 05 : ADCIF :ADC中断4 : RES : : URX0IF : USART0接受中断2 : IT1 : 总设置11 :RFERRIF : RFERR中断发生0 : IT0 : 总设置1S0CON(0X98)7 : RES : 06 : RES : 05 : RES : 04 : RES : 03 : RES : 02 :

27、 RES : 01 : ENCIF_1 : AES中断发生0 : ENCIF_0 : AES中断发生S1CON(0X9B)7 : RES : 06 : RES : 05 : RES : 04 : RES : 03 : RES : 02 : RES : 01 : RFIF_1 : RF中断发生0 : RFIF_0 : RF中断发生IRCON(0XC0)7 : STIF : 睡眠时钟6 : RES : 05 : P0IF : PORT0中断发生4 : T4IF : 定时器4中断发生3 : T4IF : 定时器3中断发生2 : T4IF : 定时器2中断发生1 : T4IF : 定时器1中断发生0

28、: DMAIF : DMA中断发生IRCON2(0XE8)7 :RES : 06 :RES : 05 :RES : 04 : WDTIF : 看门狗3 : P1IF : PORT12 : UTX1IF : USART11 : UTX0IF : USART00 : P2IF : PORT24电源管理和时钟频率4.4 设备有一个内部的系统时钟或者叫做主时钟,这个时钟源可以为系统提供16MHZ或32MHZ,时钟频率是由CLKCONCMD设置还有一个32KHZ的时钟源,同样也是由CLKCONCMD设置,CLKCONSTA是一个只读寄存器,可以获取当前时钟状态时钟允许选择高频率的晶体振荡器或者低频率的R

29、C振荡器,但是RF要求使用32MHZ的晶体振荡器系统时钟是由CLKCONCMD.OSC设置,CLKCONCMD被设置的时候不会马上生效,需要等到CLKCONSTA.OSC=CLKCONCMD.OSC这是因为在频率变化的时候,需要一段时间等待频率稳定,同时,CLKCONCMD.CLKSPD反应了系统时钟频率,所以也是CLKCONCMD.OSC的镜子16MHZ是校准的,一旦32MHZ已经稳定了,比如CLKCONSTA.OSC从1变成0CLKCONCMD(0XC6)BIT7:OSC32K : 0 : 32KHZ XOSC1 : 32KHZ RCOSCBIT6:OSC : 0 : 32MHZ XOSC

30、1 : 16MHZ RCOSCBIT5:3: TICKSPD : 000 : 32MHZ 001 : 16MHZ 010 : 8MHZ 011 : 4MHZ 100 : 2MHZ 101 : 1MHZ 110 : 500KHZ 111 : 250KHZBIT2:0:CLKSPD : 同上CLKCONSTA(0X9E),同上,6 FLASH控制器6.1 FLASH结构FLASH存储器被分为2048B或者1024B每页,页是最小的擦除单元,32bit是最小的写入单元,在写模式下,FLASH存储器通过写入是一个16bit的字地址寄存器FADDRH:FADDRL访问在擦除模式下,FLASH会擦除FADDRH7:1(CC2530/CC2531/CC2540/CC2541)或者FADDRH6:0(CC2533)的地址,所以这里就可以看出,前者是2K/页。后者是1K/页,一个地址4个字节6.2 FLASH写操作

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1