Вобщем до этого работал с IEEE802.15.4 на MC13213 (Freescale),там все предельно ясно,куча примеров, все расписано по шагам,тем более был отличный семинар в Питере в апреле по ZigBee стеку.
Теперь попал в руки знаменитый 99$ набор EZ430-RF2480.Там стоит MSP430F2274 и CC2480.
Я засучил рукава и взятся за CC2480 Interface Specification (SWRA175A). Зы выходные прочел, понял на ~80% и начал ваять. Не работает,тогда смотрю примеры от TI:
1. SWRU169: рассмотрены по сути только 3 команды, причем самые элементарные: cc2480HardReset, cc2480SoftReset, getChipId.Они и без примеров были предельно ясны.
2. SWRC097: родная прошивка этого набора (ZASA). Тут наоборот такие дебри,что аж страшно. Программа вроде бы простая, но как наворочена. Я около 20% понял только. Я,честно говоря, программист-то не очень.
Наконец вопрос: кто уже работал с CC2480 поделитесь самым простым примером - отправить/принять.Вот что делаю я:
a. MSP peripheral initialization (DCO=MCLK=SMCLK=8MHz,GPIO,UART)
b. CC2480 power up procedure (CFG0,CFG1, SPI:SMCLK/3,4-pin,8-bit,master)
c. CC2480 configaration procedure (Coordinator/Router,Short adress,PANID,channel list)
d. Registering application(ZB_APP_REGISTER_REQUEST)
e. Start ZigBee stack (ZB_START_REQUEST)
Вот тут начинаются проблемы. Жду от CC2480 ответа в виде ZB_START_CONFIRM,а в ответ тишина.
Вот main() для координатора:
void main (void)
{
uint8 value8;
uint16 value16;
uint32 value32;
//MSP430 peripheral initialization
BoardInit(); // MCLK=SMCLK=DCO=8MHz,USCIB0:SPI,8-bit,Master,4-pin,SMCLK/3
//CC2480 confiruration procedure
cc2480HardReset(); // Clear all CC2480 Configurations to default values
value8 = 0x00; // Set device type to COORDINATOR
zb_WriteConfiguration(ZCD_NV_LOGICAL_TYPE, 1, &value8);
printKvpHex8bit("ZCD_NV_LOGICAL_TYPE status is: ", hostMsgBuf[3]); //Смотрю статус в HT - OK
cc2480HardReset();
value16 = 0x2481; // Set short adress to 0x2481
zb_WriteConfiguration(ZCD_NV_USERDESC, 2, &value16);
printKvpHex8bit("ZCD_NV_USERDESC status is: ", hostMsgBuf[3]); //Смотрю статус в HT - OK
value16 = 0x2480; // Set net. PANID to 0x2480
zb_WriteConfiguration(ZCD_NV_PANID, 2, &value16);
printKvpHex8bit("ZCD_NV_PANID status is: ", hostMsgBuf[3]); //Смотрю статус в HT - OK
value32 = 0x00000001; // Set ch. number to 0 value
zb_WriteConfiguration(ZCD_NV_CHANLIST, 4, &value32);
printKvpHex8bit("ZCD_NV_CHANLIST status is: ", hostMsgBuf[3]); //Смотрю статус в HT - OK
value8 = 0x02; // Set STARTUP_OPTION to 0x02
zb_WriteConfiguration(ZCD_NV_STARTUP_OPTION, 1, &value8);
printKvpHex8bit("ZCD_NV_STARTUP_OPTION status is: ", hostMsgBuf[3]); //Смотрю статус в HT - OK
printStr("\n");
//Step 7. CC2480 stack start up procedure
RegApplication(); //Registering the aplication
printKvpHex8bit("Register application status is: ", hostMsgBuf[3]); //Смотрю статус в HT - OK
StartStack(); //Start stack
//После этого CC2480 должна прислать ответ ZB_START_CONFIRM, но она молчит //Step 8. Data receiving
for(;;)
{
while (ZACCEL_SRDY_IN() != 0);
//Get ZB_RECEIVE_DATA_INDICATION
cc2480RpcPoll(hostMsgBuf);
//Get the length of received packet
value16 = hostMsgBuf[7];
value16 = (value16<<8) + hostMsgBuf[8];
while(value16 != 0)
{
printKvpHex8bit("Received data is:",hostMsgBuf[10+value16]);
value16--;
}
}
}