原创 [博客大赛] 2013.6.8学习radio发送数据

2013-6-9 15:39 2227 10 10 分类: MCU/ 嵌入式
2013.6.8学习radio发送数据
uint8_t Packet[] = { 
  0x0f, // packet length including two bytes for the CRC 
  0x21, // FCF - data frame type, no security, no frame pending, ack request, no intra   PAN
  0x08, // FCF - 16 bits short destination address, no source pan id and address
  0x00, // sequence number 
  0x12, // destination pan id (lowest byte)
  0x23, // destination pan id  (highest byte)
  0x02, // destination short address/node id (lowest byte)
  0x22, // destination short address/node id (highest byte)
  0x12, // packet data
  0x34, // packet data
  0x56, // packet data
  0x78, // packet data
  0x9A, // packet data
  0xBC  // packet data
      };
 
 
发送数据的第一个字节表示接下来的数据长度,如果有硬件CRC,还要额外加多2字节
发送的数据要求有发送数据格式,按照MAC的帧格式来讲:
|     2byte    |  1byte  |  0/2byte   | 0/2/8byte  | 0/2byte | 0/2/8byte|     变长     |2byte|
| 帧控制域(FCF) | 序列号  | 目的PAN ID |  目的地址  | 源PAN ID |  源地址  |帧负载(data)|  FCS|
|______________|__________________ 地址域 _______________________________|_____________|______|
|__________________________ MHR _________________________________________|___ MAC负载__|__MFR_|
 
FCF的格式参照simple MAC library.pdf P12
教材中FCF设置成了0x0821,无加密,无挂起,有ACK请求,发送到另一个PAN,16位短目标地址,无源PAN ID和地址
注意FCF的高低位
 
CCA评估好像是用来检测该信道是否有噪声,足够传输数据,使用函数ST_RadioSetEdCcaThreshold (ed_cca_value);来设置检查的阈值,默认值-75dbm
数据发送出去之后,调用函数ST_RadioTransmitCompleteIsrCallback(StStatus status, uint32_t sfdSentTime, boolean framePending)来检查发送情况,该函数在transmit.c文件中,已经配置好了,status是返回的状态,sfdSentTime不知道是干嘛的,还要在检查下,boolean framePending是CFC中framePending位,表示是否还有额外的数据要发送
SFD是PHY格式中的一个字节:The SFD field (start-of-frame delimiter) is an 8-bit field indicating the end of the synchronization preamble and the start of the packet data. The SFD must be equal to 10100111b. 但还是不明白是干嘛用的,必须通过函数ST_RadioEnableSfdSentNotification(TRUE);开启SFD事件功能,ST_RadioSfdSentIsrCallback(uint32_t sfdSentTime)函数包含在transmit.c文件中,好像和中断有关。
 
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
10
关闭 站长推荐上一条 /3 下一条