?? lt8900_tx_main.lst
字號(hào):
310 1 RESET_N = 0;
311 1 delay_us(1000);
312 1 RESET_N = 1; //Enable 8900
313 1 delay_us(5000); //delay 5ms to let LT8900 stable
314 1 CLK = 0; //set SPI clock to low
315 1 #if 1 //ok
316 1 LT_WriteReg(0, 0x6F, 0xE0);
317 1 LT_WriteReg(1, 0x56, 0x81);
318 1 LT_WriteReg(2, 0x66, 0x17);
319 1 LT_WriteReg(4, 0x9C, 0xC9);
320 1 LT_WriteReg(5, 0x66, 0x37);
321 1 LT_WriteReg(7, 0x00, 0x00);
322 1 LT_WriteReg(8, 0x6C, 0x90);
323 1 LT_WriteReg(9, 0x1f, 0xc0);
324 1 LT_WriteReg(10, 0x7F, 0xFD);
325 1 LT_WriteReg(11, 0x00, 0x08);
326 1 LT_WriteReg(12, 0x00, 0x00);
327 1 LT_WriteReg(13, 0x48, 0xBD);
328 1
329 1 LT_WriteReg(22, 0x00, 0xff);
330 1 LT_WriteReg(23, 0x80, 0x05);
331 1 LT_WriteReg(24, 0x00, 0x67);
332 1 LT_WriteReg(25, 0x16, 0x59);
333 1 LT_WriteReg(26, 0x19, 0xE0);
334 1 LT_WriteReg(27, 0x12, 0x00);
335 1 LT_WriteReg(28, 0x18, 0x00);
336 1
337 1 LT_WriteReg(32, 0x50, 0x04);
338 1 LT_WriteReg(33, 0x3f, 0xC7);
339 1 LT_WriteReg(34, 0x20, 0x00);
340 1 LT_WriteReg(35, 0x03, 0x20);
341 1 LT_WriteReg(36, 0x03, 0x80);
342 1 LT_WriteReg(37, 0x03, 0x80);
343 1 LT_WriteReg(38, 0x5A, 0x5A);
344 1 LT_WriteReg(39, 0x03, 0x80);
345 1 LT_WriteReg(40, 0x44, 0x01);
346 1 LT_WriteReg(41, 0xe0, 0x00);
347 1 LT_WriteReg(42, 0xFD, 0xB0);
348 1 LT_WriteReg(43, 0x00, 0x0F);
349 1 LT_WriteReg(50, 0x00, 0x00);
350 1 #endif
351 1 delay_us(10000); //delay 10ms to let LT8900 for operation
352 1 }
353 //=======================================================================
354
355 //=======================================================================
356 // SPI Routing
357 //=======================================================================
358
359 void SPI_SendFrame (void)
360 {
361 1 unsigned char i, j;
362 1
363 1 SS = 0;
364 1 for (j=0; j<tlen; j++)
C51 COMPILER V7.50 LT8900_TX_MAIN 03/08/2011 11:20:07 PAGE 7
365 1 RBUF[j] = SPI_SendByte(TBUF[j]);
366 1 SS = 1;
367 1 }
*** WARNING C280 IN LINE 361 OF LT8900_TX_MAIN.C: 'i': unreferenced local variable
368
369 void SPI_CleanBuffer (void)
370 {
371 1 register char i;
372 1 for (i = 0; i<BUFLEN; i++) RBUF[i] = 0;
373 1 }
374
375 #if _HIGHSPEED_SPI_
376 unsigned char SPI_SendByte(unsigned char buf)
377 {
378 1 int i = 0;
379 1 unsigned char retVal;
380 1 while (!NSSMD0); // Wait until the SPI is free, in case
381 1 // it's already busy
382 1
383 1 NSSMD0 = 0;
384 1 for(i=0;i<1;i++);
385 1 SPI0DAT = buf;
386 1 for(i=0;i<2;i++);
387 1 retVal = SPI0DAT;
388 1 for(i=0;i<4;i++);
389 1 NSSMD0 = 1;
390 1 }
*** WARNING C173 IN LINE 390 OF LT8900_TX_MAIN.C: missing return-expression
391 #endif
392
393 //==========================================================
394 // LT8900 Routing
395 //==========================================================
396 #if (_HIGHSPEED_SPI_)
397 void LT_ReadReg(unsigned char reg)
398 {
399 1 int i = 0;
400 1 while (!NSSMD0); // Wait until the SPI is free, in case
401 1 // it's already busy
402 1
403 1 NSSMD0 = 0;
404 1 //for(i=0;i<4;i++);
405 1 SPI0DAT = reg+0x80;
406 1 for(i=0;i<1;i++);
407 1 SPI0DAT = 0xFF;
408 1 //for(i=0;i<2;i++);
409 1 RegH = SPI0DAT;
410 1 //for(i=0;i<2;i++);
411 1 SPI0DAT = 0xFF;
412 1 //for(i=0;i<2;i++);
413 1 RegL = SPI0DAT;
414 1 for(i=0;i<5;i++);
415 1 NSSMD0 = 1;
416 1 }
417 #else
void LT_ReadReg(unsigned char reg)
{
int i=0;
SS = 0;
for(i=0;i<10;i++);
reg = SPI_SendByte(reg+0x80);
for(i=0;i<10;i++);
C51 COMPILER V7.50 LT8900_TX_MAIN 03/08/2011 11:20:07 PAGE 8
RegH = SPI_SendByte(0xFF);
for(i=0;i<10;i++);
RegL = SPI_SendByte(0xFF);
for(i=0;i<10;i++);
SS = 1;
}
#endif
432
433 #if (_HIGHSPEED_SPI_)
434 void LT_WriteReg(unsigned char reg, unsigned char H, unsigned char L)
435 {
436 1 int i = 0;
437 1 //SPI_Byte_Write(H);
438 1 while (!NSSMD0); // Wait until the SPI is free, in case
439 1 // it's already busy
440 1 NSSMD0 = 0;
441 1 for(i=0;i<2;i++);
442 1 SPI0DAT = reg;
443 1 for(i=0;i<2;i++);
444 1 SPI0DAT = H;
445 1 for(i=0;i<2;i++);
446 1 SPI0DAT = L;
447 1 for(i=0;i<5;i++);
448 1 NSSMD0 = 1;
449 1 }
450 #else
void LT_WriteReg(unsigned char reg, unsigned char H, unsigned char L)
{
int i=0;
SS = 0;
for(i=0;i<10;i++);
reg = SPI_SendByte(reg);
for(i=0;i<10;i++);
RegH = SPI_SendByte(H);
for(i=0;i<10;i++);
RegL = SPI_SendByte(L);
for(i=0;i<10;i++);
SS = 1;
}
#endif
465
466 void LT_SetSyncWord (void)
467 {
468 1 TBUF[0] = 0x24; //reg36 to reg39
469 1 TBUF[1] = SYNCWORD_0;
470 1 TBUF[2] = SYNCWORD_1;
471 1 TBUF[3] = SYNCWORD_2;
472 1 TBUF[4] = SYNCWORD_3;
473 1 TBUF[5] = SYNCWORD_4;
474 1 TBUF[6] = SYNCWORD_5;
476 1 TBUF[8] = SYNCWORD_7;
477 1 tlen = 9;
478 1 SPI_SendFrame();
479 1 }
480
481 void LT_StartTX(void)
482 {
483 1 LT_ReadReg(0x07);
484 1 H0 = 1; //enable TX;
485 1 LT_WriteReg(0x07, RegH, channel);
486 1 tlen = 0;
C51 COMPILER V7.50 LT8900_TX_MAIN 03/08/2011 11:20:07 PAGE 9
487 1 }
488
489 void LT_StartRX(void)
490 {
491 1 LT_ReadReg(0x07);
492 1 H0 = 0;
493 1 LT_WriteReg(0x07, RegH, channel+0x80);
494 1
495 1 }
496
497 void LT_StopRTX(void)
498 {
499 1 LT_ReadReg(0x07);
500 1 H0 = 0;
501 1 L7 = 0;
502 1 LT_WriteReg(0x07, RegH, RegL);
503 1 }
504
505 void LT_SetRFPower(unsigned char power)
506 {
507 1 LT_ReadReg(0x09);
508 1 RegH &= 0x0F;
509 1 power = power << 4;
510 1 RegH |= power;
511 1 LT_WriteReg(0x09, RegH, RegL);
512 1 }
513
514 unsigned char LT_GetRFPower(void)
515 {
516 1 LT_ReadReg(0x09);
517 1 return (RegH >> 4);
518 1 }
519
520 void LT_DisableRSSI(void)
521 {
522 1 LT_ReadReg(0x0B);
523 1 H0 = 1;
524 1 LT_WriteReg(0x0B, RegH, RegL);
525 1 }
526
527 void LT_EnableRSSI(void)
528 {
529 1 LT_ReadReg(0x0B);
530 1 H0 = 0;
531 1 LT_WriteReg(0x0B, RegH, RegL);
532 1 }
533
534 void LT_ReadAllReg(void)
535 {
536 1 unsigned char i;
537 1 SS = 0;
538 1 SPI_SendByte(0x80);
539 1 EBUF[0] = SPI_SendByte(0x80);
540 1 for (i=1; i<107; i++)
541 1 {
542 2 EBUF[i] = SPI_SendByte(0xFF);
543 2 }
544 1 SS = 1;
545 1 }
546
547 void LT_SetChannel(unsigned channel)
548 {
C51 COMPILER V7.50 LT8900_TX_MAIN 03/08/2011 11:20:07 PAGE 10
549 1 LT_ReadReg(0x07);
550 1 RegL &= 0x80;
551 1 RegL |= channel;
552 1 LT_WriteReg(0x07, RegH, RegL);
553 1 }
554
555 unsigned char LT_GetChannel(void)
556 {
557 1 LT_ReadReg(0x07);
558 1 return(RegL & 0x7F);
559 1 }
560
561 void LT_ReadFIFOPoint(void)
562 {
563 1 LT_ReadReg(0x34);
564 1 W_FIFO = RegH & 0x3F;
565 1 R_FIFO = RegL & 0x3F;
566 1 }
567
568 void LT_CleanWFIFO(void)
569 {
570 1 LT_ReadReg(0x34);
571 1 H7 = 1;
572 1 LT_WriteReg(0x34, RegH, RegL);
573 1 }
574
575 void LT_RSSI_SCAN(unsigned char start_ch, unsigned char ch_no)
576 {
577 1 TBUF[0]=0x2A;
578 1 TBUF[1]=ch_no << 2;
579 1 TBUF[2]=10;
580 1 tlen=3;
581 1 SPI_SendFrame();
582 1
583 1 TBUF[0]=0x2B;
584 1 TBUF[1]=start_ch + 0x80;;
585 1 TBUF[2]=0x6B;
586 1 SPI_SendFrame();
587 1
588 1 delay_us(10000);
589 1
590 1 LT_ReadFIFOPoint();
591 1 }
592
593 void LT_SendPacket(void)
594 {
595 1 unsigned char i = 0;
596 1
597 1 LT_CleanWFIFO(); //Reset writing FIFO point to 0;
598 1 if (dlen < 1) return;
599 1 LT_WriteReg(50, dlen, TBUF[i]);
600 1 dlen--;
601 1 i++;
602 1 while (dlen > 0)
603 1 {
604 2 LT_WriteReg(50, TBUF[i], TBUF[i+1]);
605 2 dlen -= 2;
606 2 i += 2;
607 2 }
608 1
609 1 LT_StartTX();
610 1 while (PKT_FLAG == 0);
C51 COMPILER V7.50 LT8900_TX_MAIN 03/08/2011 11:20:07 PAGE 11
611 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1176 ----
CONSTANT SIZE = 80 ----
XDATA SIZE = 200 ----
PDATA SIZE = ---- ----
DATA SIZE = 74 10
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 3 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -