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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9512|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产99久久精品一区二区永久免费 | 毛片高清| 伊人久久精品一区二区三区 | 亚洲精品视频一区 | www.成人久久 | 91视频三区 | 一级看片| 成人精品一区二区三区 | 伊人网站在线 | 91精品久久久久久久久99蜜臂 | 成人午夜免费视频 | 91精品国产欧美一区二区成人 | 国外成人在线视频 | 欧美电影免费网站 | 国产乱码精品一区二区三区中文 | 久久久久国产一区二区三区四区 | 91精品国产综合久久久久蜜臀 | 日韩精品在线一区 | 国产精品一区在线观看你懂的 | 99pao成人国产永久免费视频 | 亚洲国产一区二区视频 | 亚洲久视频 | 国产精品视频中文字幕 | 在线超碰 | 欧美视频在线播放 | 国产一级片精品 | 欧美色成人 | 国产一级黄色网 | 最近免费日本视频在线 | 久久久成人免费一区二区 | 欧美成人精品一区二区男人看 | 久久精品美女 | 亚洲成年在线 | 欧美精品成人一区二区三区四区 | 日韩中文字幕久久 | 精品一区二区三区中文字幕 | 伦理二区 | 欧美日韩精品亚洲 | 狠狠入ady亚洲精品经典电影 | 一区二区三区日 | 狠狠爱综合网 |