CC2530 CSP 命令定义
zigbee吧
全部回复
仅看楼主
level 5
lee8872 楼主
众所周知CC2530有个CSP,协处理器,可以和mcu一起工作,处理无线的东西,写课跑程序的cd/maca一定要用,但是写入命令时候都是要写机器码的,不容易
我就写了个全部CSP的宏出来,不知道这个东西是不是能从协议栈什么的里面找到,如果找到请大家指出.
现在吧这个csp代码贴出来方便大家使用,另外大家也帮我找找错误,
下面贴代码:
2014年03月23日 08点03分 1
level 5
lee8872 楼主
#ifndef csp_h
#define csp_h
#define DECZ 0XC5
#define DECY 0XC4
#define DECX 0XC3
#define INCZ 0XC2
#define INCY 0XC1
#define INCX 0XC0
#define INCMAXY(M) (0XC8|(M&0X07))
#define RANDXY 0XBD
#define INT 0XBA
#define WAITX 0XBC
#define SETCMP1 0XBE
#define WATE(W) (0X80|(W&0X1F))
#define WEVENT1 0XB8
#define WEVENT2 0XB9
#define LABLE 0XBB
#define RPT(C,N) (0XA0|((N&0X01)<<3)|(C&0X07))
#define SKIP(S,N,C) (((S&0X07)<<4)|((N&0X01)<<3)|(C&0X07))
#define STOP 0XD2
#define SNOP 0XD0
#define SRXON 0XD3
#define STXON 0XD9
#define STXONCCA 0XDA
#define SSAMPLECCA 0XDB
#define SRFOFF 0XDF
#define SFLUSHRX 0XDD
#define SFLUSHTX 0XDE
#define SACK 0XD6
#define SACKPEND 0XD7
#define SNACK 0XD8
#define SRXMASKBITSET 0XD4
#define SRXMASKBITCLR 0XD5
#define ISSTOP 0XE2
#define ISSTART 0XE1
#define ISRXON 0XE3
#define ISRXMASKBITSET 0XE4
#define ISRXMASKBITCLR 0XE5
#define ISTXON 0XE9
#define ISTXONCCA 0XEA
#define ISSAMPLECCA 0XEB
#define ISRFOFF 0XEF
#define ISFLUSHRX 0XED
#define ISFLUSHTX 0XEE
#define ISACK 0XE6
#define ISACKPEND 0XE7
#define ISNACK 0XE8
#define ISCLEAR 0XFF
#endif
2014年03月23日 08点03分 2
level 5
lee8872 楼主
void initCsp(void *a)
{
CSPY = 0;
RFST = ISCLEAR;//清除指令寄存器
//CCA在信道空闲时为1
RFST = SKIP(2,1,0);//如果CCA为0就跳过下2条指令
RFST = STXONCCA;//开始发送
RFST = STOP;//直接的第一路,结束
RFST = SKIP(0,1,0);//如果CCA为0就始终循环 = while(!CCA)
RFST = RANDXY;//X加载随机数
RFST = LABLE;//调回标记
RFST = DECY;//Y自减,
RFST = SKIP(1,1,5);//如果Y不等于0就跳过下一跳条代码
RFST = DECX;//X自减
RFST = RPT(4,1);//如果X!=0就回到lable
RFST = INT;//触发中断
RFST = STOP;//结束
}
2014年03月23日 08点03分 3
level 5
lee8872 楼主
void initCsp(void *a)
{
CSPY = 0;
RFST = ISCLEAR;//清除指令寄存器
//CCA在信道空闲时为1
RFST = SKIP(2,1,0);//如果CCA为0就跳过下2条指令
RFST = STXONCCA;//开始发送
RFST = STOP;//直接的第一路,结束
RFST = SKIP(0,1,0);//如果CCA为0就始终循环 = while(!CCA)
RFST = RANDXY;//X加载随机数
RFST = LABLE;//调回标记
RFST = DECY;//Y自减,
RFST = SKIP(1,1,5);//如果Y不等于0就跳过下一跳条代码
RFST = DECX;//X自减
RFST = RPT(4,1);//如果X!=0就回到lable
RFST = INT;//触发中断
RFST = STOP;//结束
}
2014年03月23日 08点03分 4
level 1
楼主,你这段程序能用吗?
2015年05月12日 09点05分 5
1