久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9567|回復: 0
打印 上一主題 下一主題
收起左側

CC2530與pn532連接傳輸數據源程序

[復制鏈接]
跳轉到指定樓層
樓主
1、引腳連接
PN532 VCC-----CC2530 5V

PN532 GND-----CC2530 GND

PN532 SCL(RX)-----CC2530 P1_6引腳(TX)(uart1模式)

PN532 SDA(TX)-----CC2530 P1_7引腳(RX)(uart1模式)

2、PN532模式切換

切換為HSU 0-0

引腳連接及HSU模式如下圖(CC2530引腳自己連接)



3、數據傳輸

開啟CC2530 UART0及UART1串口,UART0用usb連接電腦串口顯示PN532回復數據,UART1傳輸CC2530至pn532的命令,目前主要是激活命令{0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0xfd, 0xd4, 0x14, 0x01, 0x17, 0x00}和尋卡命令{0x00 ,0x00 ,0xFF ,0x04 ,0xFC ,0xD4 ,0x4A ,0x02 ,0x00 ,0xE0 ,0x00}

4、代碼見附件
  1. #include <ioCC2530.h>
  2. #include <string.h>

  3. typedef unsigned char uchar;
  4. typedef unsigned int uint;
  5. #define LED P1_0
  6. #define LCD_RX P1_7      /* s---TX/   --- RX P1_7--m*/
  7. #define LCD_TX  P1_6    /* s---RX    ----TX  P1_6--m*/

  8. uchar ack_frame[]={0x00,0x00,0xFF,0x00,0xFF,0x00};
  9. uchar send_command_1[] ={0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0xfd, 0xd4, 0x14, 0x01, 0x17, 0x00};
  10. uchar send_command_2[] = {0x00 ,0x00 ,0xFF ,0x04 ,0xFC ,0xD4 ,0x4A ,0x02 ,0x00 ,0xE0 ,0x00};

  11. void InitUart(void){
  12.     P0SEL |= 0x0E;         
  13.     P2DIR &= ~0XC0;        
  14.     U0CSR |= 0x80;    // uart mode
  15. //   U0CSR |= 0x40;    // re interrupt enable
  16.     U0GCR |= 11;                                       
  17.     U0BAUD |= 216;         
  18.     UTX0IF = 0;         
  19. //   URX0IF = 0;
  20. }


  21. void uart(char Data)
  22. {
  23.         U0DBUF = Data;
  24.         while(UTX0IF == 0);
  25.         UTX0IF = 0;
  26. }
  27.       

  28. void UartSendString_PN(char *Data, int len)
  29. {
  30.     uint i;
  31.     for(i=0; i<len; i++)
  32.     {
  33.         U1DBUF = *Data++;
  34.         while(UTX1IF == 0);
  35.         UTX1IF = 0;
  36.     }
  37. }

  38. void UartSendString(char *Data, int len)
  39. {
  40.     uint i;
  41.    
  42.     for(i=0; i<len; i++)
  43.     {
  44.         U0DBUF = *Data++;
  45.         while(UTX0IF == 0);
  46.         UTX0IF = 0;
  47.     }
  48. }


  49. void delayMS(){
  50. for(uchar i =0 ;i<100;i++)
  51.   for(uchar j =0 ;j<50;j++);
  52. }


  53. void main()
  54. {
  55.       CLKCONCMD &= ~0x40;               //
  56.     while(CLKCONSTA & 0x40);          //
  57.     CLKCONCMD &= ~0x47;               //32MHZ  
  58.     PERCFG |= 0x02;              //
  59.     InitUart();
  60.        P1SEL |= 0xC0;    //1_7  1_6   WAISHE IO
  61.        P1DIR |=0X01;     //1_0 LED
  62.       U1BAUD |= 0xD8;        // baud_m 216
  63.       U1GCR |= 0x0B;        // Set baud_e 11   115200bps
  64.       U1CSR |= 0xC0;        // uart mode  ENABLE RE
  65.       U1UCR &=0xf3;       //stop bit --1bit   DISABLE Parity
  66.       U1GCR &= ~0x60;         //LSB
  67.       UTX1IF =0;   // UART1 TX interrupt signal reset
  68.       URX1IE = 1;       // UART1 TX interrupt enable
  69.       EA =1;
  70.       LED = 0;
  71.      UartSendString_PN(send_command_1,sizeof(send_command_1));
  72.       delayMS();
  73.       UartSendString_PN(send_command_2,sizeof(send_command_2));
  74.        delayMS();
  75. }

  76. uchar* chartohex(uchar v)
  77. {
  78.   uchar n[5];
  79.   n[0]=48;
  80.   n[1]=120;
  81.   uchar s1,s2;
  82.   if(((v>>4)+48)>57) s1= (v>>4)+71 ;
  83.   else   s1=(v>>4)+48;
  84.   if(((v&0x0f)+48)>57)  s2= (v&0x0f)+71;
  85.   else    s2=(v&0x0f)+48;   
  86.   n[2]=s1;
  87.   n[3]=s2;
  88.   n[4] = 44;
  89.     return n;
  90. }




  91. /****************************************************************************
  92. * 名    稱: UART1_ISR(void) 串口中斷處理函數
  93. * 描    述: 當串口1產生接收中斷,將收到的數據發送到串口
  94. ****************************************************************************/
  95. #pragma vector = URX1_VECTOR
  96. __interrupt void UART1_ISR(void)
  97. {
  98.     uchar tmp = U1DBUF;
  99.   uart(tmp);
  100. //  UartSendString(chartohex(tmp),5);
  101.     URX1IF = 0;       // 清中斷標志
  102. }


  103. /****************************************************************************
  104.   char iRxBuf = 0;
  105.   char RxBuf[];

  106. * 名    稱: UART0_ISR(void) 串口中斷處理函數
  107. * 描    述: 當串口0產生接收中斷,將收到的數據保存在RxBuf中

  108. #pragma vector = URX0_VECTOR
  109. __interrupt void UART0_ISR(void)
  110. {
  111.     if(U0DBUF == 35)  // # signal send rxbuf to pn532
  112.     {
  113.       UartSendString_PN(RxBuf,iRxBuf+1);
  114.     }else
  115.     {
  116.       RxBuf[iRxBuf]=U0DBUF;
  117.       iRxBuf++;
  118.     }
  119. //  UartSendString(chartohex(tmp),5);
  120.     URX0IF = 0;       // interrupt signal reset
  121. }
  122. ****************************************************************************/
復制代碼

以上代碼下載:
uart_硬件(測試通過).zip (27.33 KB, 下載次數: 18)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品一区二区在线播放 | 午夜影院在线观看免费 | 日韩成人免费中文字幕 | 亚洲成年在线 | 中文字幕11页 | 曰韩一二三区 | 日韩成人一区 | 免费一级淫片aaa片毛片a级 | 欧美一二三四成人免费视频 | 国产一区二区在线免费观看 | 天天天久久久 | 国产精选一区 | 中文久久| 欧美一极视频 | 一级大片 | 久久看精品 | 欧美中文在线 | 免费av一区二区三区 | 在线成人免费视频 | 欧美天堂在线观看 | 欧美视频二区 | 亚洲综合色网 | 久久久一二三 | 国产视频中文字幕 | 男女视频在线观看 | 精品中文字幕久久 | 久久国内精品 | 黄视频网址 | 欧美视频二区 | 日韩精品久久久久久 | 性国产xxxx乳高跟 | a久久| 中文字幕二区 | 国产精品成人一区二区三区 | 欧美日韩高清一区 | 伊人电影院av | 久久成人国产精品 | 国产一区二区在线免费观看 | 美国黄色毛片 | 欧美精品网站 | 青青久久av北条麻妃海外网 |