模块图
引脚功能
结构定义(头文件)
typedef u8* pu8;
typedef struct _jc24b_data_t
{
u8 rf_cmd1;
u8 rf_cmd2;
u16 rf_node_id;
u16 rf_net_id;
u8 nc1;
u8 rf_power;
u8 nc2;
u8 rf_baud;
u8 nc3;
u8 rf_chn;
u8 nc4;
u8 rf_speed;
u8 nc5;
u8 rf_lenght;
u8 nc6;
u8 rf_check_sum;
}jc24b_data;
#define RF_12dbm 0
#define RF_9dbm 2
#define RF_6dbm 4
#define RF_0dbm 6
#define RF_F5dbm 8
#define RF_F15dbm 10
#define RF_F25dbm 12
#define RF_F35dbm 14
#define BAUD_9600 4
#define BAUD_38400 6
#define RF_250Kbps 0
#define RF_1Mbps 1
#define RF_2Mbps 2
#define RF_DEFAULT_BAUD BAUD_9600
#define RF_DEFAULT_NODE_ID 0x1122
#define RF_DEFAULT_NET_ID 0x3311
#define RF_DEFAULT_POWER RF_12dbm
#define RF_DEFAULT_CHN 99
#define RF_DEFAULT_AIR_SPEED RF_1Mbps
u8 CheckSum(pu8 pSrc, u8 len);
void Jc24B_Reset(jc24b_data* dat);
void Jc24B_SetID(jc24b_data* dat,u16 node_id, u16 net_id);
实现代码
u8 CheckSum(pu8 pSrc, u8 len) {
u8 i = 0, ret = 0;
for (; i < len; ++i)
ret += *pSrc++;
return ret;
}
void Jc24B_SetCheckSum(jc24b_data *dat) {
dat->rf_check_sum = CheckSum((pu8)dat,dat->rf_lenght-1);
}
void Jc24B_Reset(jc24b_data *dat) {
memset(dat, 0, sizeof(jc24b_data));
dat->rf_cmd1 = 0xaa;
dat->rf_cmd2 = 0x5a;
dat->rf_node_id = RF_DEFAULT_NODE_ID;
dat->rf_net_id = RF_DEFAULT_NET_ID;
dat->rf_power = RF_DEFAULT_POWER;
dat->rf_baud = RF_DEFAULT_BAUD;
dat->rf_speed = RF_DEFAULT_AIR_SPEED;
dat->rf_chn = RF_DEFAULT_CHN;
dat->rf_lenght = 0x12;
Jc24B_SetCheckSum(dat);
}
void Jc24B_SetID(jc24b_data *dat, u16 node_id, u16 net_id) {
if(dat->rf_cmd1!=0xaa)
Jc24B_Reset(dat);
dat->rf_node_id = node_id;
dat->rf_net_id = net_id;
Jc24B_SetCheckSum(dat);
}