[!--tag.name--]

关于CC2530/cc2430

标签:CC2530   

《关于CC2530/cc2430》这篇文章中存在错误,具体如下:

*错误描述:
*联系邮箱:

 CC2530其实就是个单片机(增强的8051)+周边外设模块(最重要的是RF),主要用于zigbee的,当然拿来干啥都行。

像所有单片机一样,操纵这款芯片其实就是写寄存器。因为TI规定了只能用IAR做这个芯片的编程,我就用IAR 8051的模型来解释了。

芯片本身从硬件上看,有一群寄存器,有内部的RAM(开发板上一般也会有FLASH之类的外存)。从使用者的角度看(使用者都是通过IAR来用的),RAM、寄存器和FLASH都被映射到CPU的内存空间(就是从0x0000-0xFFFF的地址编号),映射成CODE和XDATA两大区域(每个都是从0x0000-0xFFFF编号的独立地址空间,具体怎么映射的见datasheet)。对芯片的所有操作都是通过读写XDATA地址空间完成的(寄存器、RAM和部分FLASH都被映射到了XDATA),更准确的说,大部分都是通过读写映射到XDATA空间的寄存器(SFR)完成的。

既然如此,无论要用芯片干嘛,读写寄存器就行了。那寄存器的种类和功能,就直接决定了这个芯片可以用来干嘛。

寄存器主要包括:

8051本身的寄存器组;

用来控制RF模块的寄存器组;

用来控制周边设备的寄存器组(比如DMA、FLASH)

有淫要问啦,那汇编语言用来干嘛的?那是8051本身的功能,识别并执行汇编语言,这也是要8051核的原因,否则直接弄一群寄存器读取设置就好了,要处理器干嘛?处理器极其对应的汇编语言都是用来完成逻辑的(就是广义上说的算法)。

又有淫要问啦,那C和C++是咋回事,IAR允许用C/C++来控制芯片(我一般用的C++)。有点编译常识的都知道,C/C++最后是要被转换成汇编的(当然,最后汇编还要转为二进制)

具体的操作方法就是看一个别人写的例子(一般是include一个寄存器定义头文件,然后直接用里面定义的变量来设置寄存器就好),学者自己写一下就好。

我觉得这篇文章写到这里可以了。具体怎么操作,能操作什么都很容易从datasheet里找到。比如8051的寄存器(全部用来完成逻辑的),FLASH的寄存器,AES的,watchdog的,usb的,timer的,dma的,每个外围模块都有相应的寄存器组,每个寄存器的功能,每一位代表啥意思,直接查datasheet就好。这样就基本就可以使用芯片啦。(当然,大部分开发板都会给外设驱动代码,比如lcd的,其实本质就是往对应的寄存器写东西,不信你随便找个程序看看)