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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3129|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

CV520 SourceCode rfid代碼下載

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:396625 發(fā)表于 2018-9-11 20:00 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
riid的代碼   cv520的, 親自測試通過


單片機源程序如下:
  1. #include "main.h"
  2. #include "stm32f10x_Init.h"
  3. #include "PCD.h"
  4. #include "string.h"
  5. #include "ISO14443.h"
  6. #include "History.h"
  7. #include <stdio.h>

  8. //------------------------------------------------------------------------------
  9. // Functions Define
  10. //------------------------------------------------------------------------------
  11. tpd_Card g_sCard;                                                // 射頻卡
  12. unsigned char  g_cBuffer[256];                        // 通信緩存
  13. unsigned short g_iLength;

  14. unsigned char  g_cATS[32];
  15. unsigned char  g_cATSLen;

  16. const unsigned char g_cM1KEY[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};


  17. //系統(tǒng)需要讀取卡片的全球唯一碼(卡片的第0塊)和會員編號數(shù)據(jù)(卡片的第1塊),讀卡密鑰類型為A型(0x60) ,  密鑰數(shù)據(jù) 6 Byte(0x16,0x81,0x68,0x16,0x81,0x68) 。

  18. //******************************************************************************
  19. //    PARAM: void
  20. //   RETURN: void
  21. //  COMMENT: 主程序
  22. //                  
  23. //******************************************************************************
  24. int main(void)
  25. {
  26.         unsigned char cStatus;
  27.         
  28.         // 初始化系統(tǒng)
  29.         InitializeSystem();
  30.         
  31.         // 初始化設(shè)備
  32.         InitDevice();
  33.         
  34.         do
  35.         {
  36.                 PiccReset();
  37.                
  38.                 // ISO14443A尋卡 判斷卡類型
  39.                 // 選卡,防碰撞,
  40.                 cStatus = PiccRequest(PICC_REQALL, g_sCard.cATQ);
  41.         
  42.                 if (cStatus == ERR_SUCCESS)
  43.                 {
  44.                         cStatus = PiccAnticollSelect(&g_sCard.cLen, g_sCard.cUID, &g_sCard.cSAK);
  45.                         
  46.                         cStatus = PiccHaltA();                // 正常返回 00
  47.                         
  48.                         cStatus = PiccRequest(PICC_REQIDL, g_sCard.cATQ);        // 正常返回 FF 無卡
  49.                         
  50.                         cStatus = PiccRequest(PICC_REQALL, g_sCard.cATQ);        // 正常返回 00
  51.                         if (cStatus == ERR_SUCCESS)
  52.                         {
  53.                                 cStatus = PiccAnticollSelect(&g_sCard.cLen, g_sCard.cUID, &g_sCard.cSAK);
  54.                         }
  55.                         
  56.                         LED_GRE(ON);
  57.                 }
  58.                 else
  59.                 {
  60.                         LED_GRE(OFF);
  61.                         
  62.                 }
  63.                
  64.                 if (cStatus == ERR_SUCCESS)
  65.                 {
  66.                         printf("card ok !\n");
  67.                         // Mifare卡 測試流程
  68.                                 // 認(rèn)證扇區(qū)
  69.                                 // 讀取數(shù)據(jù)塊1
  70.                                 // 寫入數(shù)據(jù)塊1        清空
  71.                                 // 讀取數(shù)據(jù)塊1
  72.                                 // 寫入數(shù)據(jù)塊1        寫值
  73.                
  74.                         cStatus = PiccAuthState(3, 0x60, 0x00, (unsigned char *)g_cM1KEY);
  75.                         if (cStatus == ERR_SUCCESS)
  76.                         {
  77.                                 printf("auth ok !\n");
  78.                         }

  79.                         if (cStatus == ERR_SUCCESS)
  80.                         {
  81.                                 cStatus = PiccRead(1, g_cBuffer);
  82.                         }
  83.                         
  84.                         if (cStatus == ERR_SUCCESS)
  85.                         {
  86.                                 printf("read: ");
  87.                                 for (int i = 0; i < 16; i++) {
  88.                                         printf("%02X ", g_cBuffer[i]&0xFF);
  89.                                 }
  90.                                 printf("\n");
  91.                         }


  92.                         if (cStatus == ERR_SUCCESS)
  93.                         {
  94.                                 memset(g_cBuffer, 0xA5, 16);
  95.                                 cStatus = PiccWrite(1, g_cBuffer);
  96.                         }

  97.                         
  98.                         if (cStatus == ERR_SUCCESS)
  99.                         {
  100.                                 cStatus = PiccRead(1, g_cBuffer);
  101.                         }
  102.                         
  103.                         if (cStatus == ERR_SUCCESS)
  104.                         {
  105.                                 printf("read: ");
  106.                                 for (int i = 0; i < 16; i++) {
  107.                                         printf("%02X ", g_cBuffer[i]&0xFF);
  108.                                 }
  109.                                 printf("\n");
  110.                         }

  111.                         if (cStatus == ERR_SUCCESS)
  112.                         {
  113.                                 memset(g_cBuffer, 0x00, 16);
  114.                                 cStatus = PiccWrite(1, g_cBuffer);
  115.                         }
  116.                         
  117.                         printf("\n");
  118.                 }
  119.                 else
  120.                 {
  121.                         LED_YEL(OFF);
  122.                         LED_BLU(OFF);
  123.                 }
  124.         } while (1);
  125. }
  126. //******************************************************************************
  127. //                 IN: void
  128. //        RETURN: void
  129. // Comment:
  130. //
  131. //******************************************************************************
  132. void InitDevice(void)
  133. {
  134.         unsigned char cStatus;
  135.         LED_RED(ON);
  136.         LED_GRE(ON);
  137.         LED_YEL(ON);
  138.         LED_BLU(ON);
  139.         Delay100uS(2000);                // 延時200ms
  140.         LED_RED(OFF);
  141.         LED_GRE(OFF);
  142.         LED_YEL(OFF);
  143.         LED_BLU(OFF);
  144.         BEEP(OFF);
  145.         
  146.         // LED_RED:        射頻正常啟動亮
  147.         // LED_GRE:        有卡指示燈,單獨亮為M1卡
  148.         // LED_YEL:        Type A CPU Card
  149.         // LED_BLU:        Type B CPU Card
  150.         


  151.         RC_SEL0(OFF);
  152.         RC_SEL1(ON);                        // 設(shè)置射頻芯片為SPI模式
  153.         
  154.         cStatus = PcdReset();
  155.         if (cStatus == ERR_SUCCESS)
  156.         {
  157.                 PcdConfig(PCD_TYPE_14443A);
  158.                 LED_RED(ON);                // 射頻初始化成功,RED LED 點亮。
  159.         }

  160.         return;
  161. }

  162. //******************************************************************************
  163. //                 IN: unsigned int iTimes
  164. //        RETURN: void
  165. // Comment: 使用Timer4做等待延時,單位時間100us
  166. //
  167. //******************************************************************************
  168. void Delay100uS(unsigned int iTimes)
  169. {        
  170.         Timer4_Init(TIME_UNIT_100US);
  171.         
  172.         Timer4_Wait(iTimes);
  173.         
  174.         Timer4_Stop();
  175.         return;
  176. }

  177. void Timer4_Init(unsigned char cMode)
  178. {
  179.         TIM_TimeBaseInitTypeDef        TIM_TimeBaseStructure;
  180.         uint16_t PrescalerValue;
  181.         uint16_t PeriodValue;
  182.         
  183.         switch (cMode)
  184.         {
  185.                 case TIME_UNIT_100US:
  186.                         PrescalerValue = 0;                                // 系統(tǒng)時鐘1分頻
  187.                         PeriodValue    = SystemCoreClock/10000;
  188.                         break;
  189.                
  190.                 case TIME_UNIT_1MS:
  191.                         PrescalerValue = 1;                                // 系統(tǒng)時鐘2分頻
  192.                         PeriodValue    = SystemCoreClock/2000;
  193.                         break;
  194.                
  195.                 case TIME_UNIT_200MS:
  196.                         PrescalerValue = 575;                        // 系統(tǒng)時鐘576分頻
  197.                         PeriodValue    = SystemCoreClock/2880;
  198.                         break;
  199.                
  200.                 default:
  201.                         break;
  202.         }

  203.         TIM_TimeBaseStructure.TIM_Period = PeriodValue;
  204. ……………………

  205. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
CV520 SourceCode.7z (196.13 KB, 下載次數(shù): 42)


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

使用道具 舉報

沙發(fā)
ID:228294 發(fā)表于 2018-10-17 10:05 | 只看該作者
好資料,下載學(xué)習(xí)。
回復(fù)

使用道具 舉報

板凳
ID:495929 發(fā)表于 2019-6-17 11:39 | 只看該作者

好資料,下載學(xué)習(xí)。
回復(fù)

使用道具 舉報

地板
ID:322315 發(fā)表于 2019-12-8 11:46 | 只看該作者
已下載,樓主辛苦
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日日干日日射 | 天天视频一区二区三区 | 91 久久| 中文字幕国产 | 久久精品亚洲精品国产欧美 | 在线观看www视频 | 亚洲免费网站 | 在线精品一区二区 | 欧美一区二区三区视频 | 午夜小视频在线播放 | 成人在线精品视频 | 久久精品一区二区 | 亚洲一二三区免费 | 亚洲不卡av在线 | 欧美视频免费 | 日日爱视频 | 在线观看a视频 | www国产成人 | 欧美啪啪网站 | 亭亭五月激情 | 999精品视频| 热99视频| 午夜午夜精品一区二区三区文 | 在线午夜电影 | 久久久久久国产精品久久 | 精品一区二区久久久久久久网站 | 亚洲精品三级 | 一区二区影视 | 久久久亚洲一区 | 国产日韩欧美一区 | 国产精品久久久久一区二区三区 | 综合久久av | 尤物视频在线免费观看 | 亚洲高清视频一区二区 | 视频一区二区中文字幕 | 国产在线视频三区 | 桃色五月| 青青草网| 一级毛片网 | 精品久久久久久久久久久久 | 嫩草视频在线免费观看 |