zoukankan      html  css  js  c++  java
  • MFRC522模块开发笔记

    Write_to_Card(…)和Read_from_Card(…)可谓是所有函数的终点,而SPIWriteByte(…)则是最底层对MFRC522模块进行操作的函数,所有函数都是为了Write_to_Card(…)和Read_from_Card(…)而产生的。因此,我们只需要调用这两个函数就可以完成IC卡的读写,同时,这两个函数的参数和使用方法都是一样的,是不是很简单!


    虽然说可以直接把我们的程序拿来用应一下急,但作为嵌入式开发者,我们建议还是需要了解这些程序是怎么来的,下面我们就来讲讲程序的组成架构和函数的功能原理。在讲程序之前,我们需要将IC卡的结构给大家讲清楚,看下图:


    上图是IC卡中的存储区结构。Mifare卡片的存储容量为8192×1位字长(即1K * 8位字长),采用E2PROM作为存储介质。整个结构划分为16个扇区,编为扇区0~15。每个扇区有4个块(Block),分别为块0,块1,块2和块3。每个块有16个字节。一个扇区共有16Byte* 4 = 64Byte。每个扇区的块3(即第四块)也称作尾块,包含了该扇区的密码A(6个字节)、存取控制(4个字节)、密码B(6 个字节)。其余三个块是一般的数据块。

    每个扇区的块3(即第四块)也称作尾块,包含了该扇区的密码A(6个字节)、存取控制(4个字节)、密码B(6个字节)。其余三个块是一般的数据块。扇区0的块0是特殊的块,包含了厂商代码信息,在生产卡片时写入,不可改写。其中:第0~4个字节为卡片的序列号,第5个字节为序列号的校验码;第6个字节为卡片的容量“SIZE”字节;第7、8个字节为卡片的类型号字节,即Tagtype字节;其他字节由厂商另加定义。

    综上所述,我们可以用来存储数据的空间为第一扇区的第1、2块,第二扇区到第63扇区的第0、1、2块,简而言之就是我们上图中的“数据块”。

    M1卡结构
    共16个扇区,每个扇区4块(块0~3),共64块,按块号编址为0~63。
    第0扇区的块0(即绝对地址0块)用于存放厂商代码,已经固化,不可更改。
    其他各扇区:
    块0、块1、块2为数据块,用于存贮数据;
    块3为控制块,存放密码A、存取控制、密码B。


    因此,只要做出一个接口,即设计一个函数,让我们指定要在哪个块上输入什么数据就好了,块的数据范围是0到63,写入的数据的格式为16个字节,如:ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff,我们设定一个数组来存储这个数据:Write_Data[16] = {0x00};
          我们设计了一个函数:Write_to_Card(kuai,Write_Data);其中,kuai就是指定是哪个块,Write_Data是指要写入的数据,就是上面所说数组的起始地址,只要事先对这两个变量进行赋值,就可以轻松向IC卡中写入数据了,我们设计了另一个函数Read_from_Card(kuai,Read_Data);kuai是指要操作的块,Read_Data就是从这个块中读取出来的数据的存放地,有了数据,不管是在lcd1602还是lcd12864或者是tft液晶显示都没什么问题了。

    现在让我们看看Write_to_Card(…)和Read_from_Card(…)的使用方法:

    void main()

    {

             Write_Data[0] = 0x33;                                //需要写入IC卡中的数据赋值

             init();                                 //串口通信初始化

             while(1)

             {

                       Write_to_Card(0x01,Write_Data);    //向IC卡中的0x01块存储区中写数据

                       delay_welcome(100);

                       Read_from_Card(0x01,Read_Data);   //从IC卡中的0x01块存储区中读数据      

             }

    }

    这是Mian函数程序.


    读写卡的时间是短暂的,而人刷卡时,卡在读卡器读卡范围内的时间相对较长,这就涉及到一次读卡和重复读卡的问题了,我们的程序设计的是一次读卡,也就是说你不管把卡放在读卡器上多长时间,系统只读写一次卡,串口调试助手不会重复显示一样的数据,这个功能可不是所有淘宝店可以提供的哦。下面我们来看看程序:

    //IC卡中写数据

    unsigned charWrite_to_Card(unsigned char data KuaiN,unsigned char *pData) 

    {

             char data status;

             unsigned char idata RevBuffer[4];

             unsigned char data MLastSelectedSnr[4];

             unsigned char dataPassWd[6]={0xff,0xff,0xff,0xff,0xff,0xff};

             unsigned char data place = 0x00;

             PcdReset();

    //寻天线区内未进入休眠状态的卡,返回卡片类型 2字节

             status=PcdRequest(PICC_REQIDL,&RevBuffer[0]);

             if(status!=MI_OK)

             {

                      flag = 0;

                       green = 1;

                       return 0x00;

             }

    //判断当操作卡完成后就停止重复读写卡

             if(flag == 1)                                

             { 

                       return 0x00;

             }

    //防冲撞,返回卡的序列号 4字节

             status=PcdAnticoll(&RevBuffer[2]);

             if(status!=MI_OK)

             {       

                       return 0x00;

             }                         

             memcpy(MLastSelectedSnr,&RevBuffer[2],4); //拷贝序列号到变量MLastSelectedSnr

    //选卡,卡号为MLastSelectedSnr

             status=PcdSelect(MLastSelectedSnr);

             if(status!=MI_OK)

             {

                       return 0;

             }

             //验证卡片密码,空白卡都是0xff,0xff,0xff,0xff,0xff,0xff

             status=PcdAuthState(PICC_AUTHENT1A,KuaiN,PassWd,MLastSelectedSnr);

             if(status!=MI_OK)

             {

                       return 0x00;

             }

    //向卡中指定块中写数据

             status=PcdWrite(KuaiN,pData); 

             if(status!=MI_OK)             

                       return 0;

             }

    //命令卡片进入休眠状态

             PcdHalt();

             flag = 1;

             green = 0;

             return 1;

    }

    //IC卡中读数据

    unsigned char Read_from_Card(unsigned char data KuaiN,unsigned char *pData) 

    {

             char data status;

             unsigned char idata RevBuffer[4];

             unsigned char data MLastSelectedSnr[4];

             unsigned char dataPassWd[6]={0xff,0xff,0xff,0xff,0xff,0xff};

             unsigned char data place = 0x00;

             PcdReset();

    //寻天线区内未进入休眠状态的卡,返回卡片类型 2字节

             status=PcdRequest(PICC_REQIDL,&RevBuffer[0]);

             if(status!=MI_OK)

             {

                       flag = 0;

                       green = 1;

                       return 0x00;

             }

    //判断当操作卡完成后就停止重复读写卡

             if(flag == 1)                                

             { 

                       return 0x00;

             }

    //防冲撞,返回卡的序列号 4字节

             status=PcdAnticoll(&RevBuffer[2]);

             if(status!=MI_OK)

             {       

                       return 0x00;

             }                         

             memcpy(MLastSelectedSnr,&RevBuffer[2],4); //拷贝序列号到变量MLastSelectedSnr

    //选卡,卡号为MLastSelectedSnr

             status=PcdSelect(MLastSelectedSnr);

             if(status!=MI_OK)

             {

                       return 0;

             }

             //验证卡片密码,空白卡都是0xff,0xff,0xff,0xff,0xff,0xff

             status=PcdAuthState(PICC_AUTHENT1A,KuaiN,PassWd,MLastSelectedSnr);

             if(status!=MI_OK)

             {

                       return 0x00;

             }

    //从卡中对应块中读取数据,注意,一次读出整块数据,即16字节

             status= PcdRead (KuaiN,pData);

             if(status!=MI_OK)             

                       return 0;

             }       

    //命令卡片进入休眠状态

             PcdHalt();

             flag = 1;

             green = 0;

             //如果程序走到这一步,就说明读卡成功,并且pData指定人数组中存放着块数据

             //我们可以通过下面的函数向PC机传送卡里的数据

    Serial_Rs232(pData,16);

             return 1;

    }


    程序的函数关系:

    Main()

    |---- Write_to_Card(…);     //写卡

    |         |---- PcdRequest(…);  //寻天线区内未进入休眠状态的卡

    |         |        |--- ClearBitMask(…)

    |         |        |       |--- ReadRawRC(…)

    |         |        |       |       |---SPIWriteByte(…)

    |         |        |       |       |---SPIReadByte(…)

    |         |       |        |--- WriteRawRC(…)

    |         |        |                |---SPIWriteByte(…)

    |         |        |--- WriteRawRC(…)

    |         |        |       |--- SPIWriteByte(…)

    |         |        |--- SetBitMask(…)

    |         |        |       |--- ReadRawRC (…)

    |         |        |       |       |---SPIWriteByte(…)

    |         |        |       |       |---SPIReadByte(…)

    |         |        |       |--- WriteRawRC (…)

    |         |        |       |       |---SPIWriteByte(…)

    |         |        |--- PcdComMF522

    |         |                 |--- WriteRawRC (…)

    |         |                         |---SPIWriteByte(…)

    |         |                 |--- ClearBitMask (…)

    |         |                 |       |--- ReadRawRC(…)

    |         |                 |       |      |---SPIWriteByte(…)

    |         |                 |       |      |---SPIReadByte(…)

    |         |                 |       |--- WriteRawRC(…)

    |         |                 |               |---SPIWriteByte(…)

    |         |                 |--- SetBitMask (…)

    |         |                 |       |--- ReadRawRC (…)

    |         |                 |       |      |---SPIWriteByte(…)

    |         |                 |       |      |---SPIReadByte(…)

    |         |                 |       |--- WriteRawRC (…)

    |         |                |       |      |---SPIWriteByte(…)

    |         |                 |--- ReadRawRC(…)

    |         |                         |---SPIWriteByte(…)

    |         |---- PcdAnticoll(…)

    |         |        |--- ClearBitMask (…)

    |         |        |       |       |--- ReadRawRC(…)

    |         |        |       |       |       |---SPIWriteByte(…)

    |         |        |       |       |       |---SPIReadByte(…)

    |         |        |       |       |--- WriteRawRC(…)

    |         |        |       |               |---SPIWriteByte(…)

    |         |        |--- WriteRawRC (…)

    |         |        |       |---SPIWriteByte(…)

    |         |        |--- PcdComMF522 (…)

    |         |        |       |--- WriteRawRC (…)

    |         |        |       |       |---SPIWriteByte(…)

    |         |        |       |--- ClearBitMask (…)

    |         |       |        |      |--- ReadRawRC(…)

    |         |        |       |       |       |---SPIWriteByte(…)

    |         |        |       |       |       |---SPIReadByte(…)

    |         |        |       |       |--- WriteRawRC(…)

    |         |        |       |               |---SPIWriteByte(…)

    |         |        |       |--- SetBitMask (…)

    |         |        |       |       |--- ReadRawRC (…)

    |         |        |       |       |       |---SPIWriteByte(…)

    |         |        |       |       |       |---SPIReadByte(…)

    |         |        |       |       |--- WriteRawRC (…)

    |         |        |       |       |       |---SPIWriteByte(…)

    |         |        |       |--- ReadRawRC(…)

    |         |       |                |---SPIWriteByte(…)

    |         |        |--- SetBitMask (…)

    |         |        |      |--- ReadRawRC (…)

    |         |        |      |       |---SPIWriteByte(…)

    |         |        |      |       |---SPIReadByte(…)

    |         |        |      |--- WriteRawRC (…)

    |         |        |      |       |---SPIWriteByte(…)

    |         |----PcdSelect(…)

    |         |        |--- CalulateCRC (…)

    |         |        |       |--- WriteRawRC (…)

    |         |        |       |       |---SPIWriteByte(…)

    |         |        |       |--- ClearBitMask (…)

    |         |       |        |      |--- ReadRawRC(…)

    |         |        |       |       |       |---SPIWriteByte(…)

    |         |        |       |       |       |---SPIReadByte(…)

    |         |        |       |       |--- WriteRawRC(…)

    |         |        |       |               |---SPIWriteByte(…)

    |         |        |       |--- SetBitMask (…)

    |         |        |       |       |--- ReadRawRC (…)

    |         |        |       |       |       |---SPIWriteByte(…)

    |         |        |       |       |       |---SPIReadByte(…)

    |         |        |       |       |--- WriteRawRC (…)

    |         |        |       |       |       |---SPIWriteByte(…)

    |         |        |       |--- ReadRawRC(…)

    |         |       |                |---SPIWriteByte(…)

    |         |        |--- ClearBitMask (…)

    |         |        |       |       |--- ReadRawRC(…)

    |         |        |       |       |       |---SPIWriteByte(…)

    |         |        |       |       |       |---SPIReadByte(…)

    |         |        |       |       |--- WriteRawRC(…)

    |         |        |       |               |---SPIWriteByte(…)

    |         |        |--- PcdComMF522 (…)

    |         |        |       |--- WriteRawRC (…)

    |         |        |       |       |---SPIWriteByte(…)

    |         |        |       |--- ClearBitMask (…)

    |         |       |        |      |--- ReadRawRC(…)

    |         |        |       |       |       |---SPIWriteByte(…)

    |         |        |       |       |       |---SPIReadByte(…)

    |         |       |        |       |--- WriteRawRC(…)

    |         |        |       |               |---SPIWriteByte(…)

    |         |        |       |--- SetBitMask (…)

    |         |        |       |       |--- ReadRawRC (…)

    |         |        |       |       |       |---SPIWriteByte(…)

    |         |        |       |       |       |---SPIReadByte(…)

    |         |        |       |       |--- WriteRawRC (…)

    |         |        |       |       |       |---SPIWriteByte(…)

    |         |        |       |--- ReadRawRC(…)

    |         |        |                |---SPIWriteByte(…)

    |         |----PcdAuthState (…)

    |         |        |--- PcdComMF522 (…)

    |         |        |       |--- WriteRawRC (…)

    |         |        |       |       |---SPIWriteByte(…)

    |         |       |        |--- ClearBitMask (…)

    |         |       |        |      |--- ReadRawRC(…)

    |         |        |       |       |       |---SPIWriteByte(…)

    |         |        |       |       |       |---SPIReadByte(…)

    |         |        |       |       |--- WriteRawRC(…)

    |         |        |       |               |---SPIWriteByte(…)

    |         |        |       |--- SetBitMask (…)

    |         |        |       |       |--- ReadRawRC (…)

    |         |        |       |       |       |---SPIWriteByte(…)

    |         |        |       |       |       |---SPIReadByte(…)

    |         |        |       |       |--- WriteRawRC (…)

    |         |        |       |       |       |---SPIWriteByte(…)

    |         |        |       |--- ReadRawRC(…)

    |         |        |                |---SPIWriteByte(…)

    |         |        |--- ReadRawRC (…)

    |         |        |        |---SPIWriteByte(…)

    |         |        |       |---SPIReadByte(…)

    |         |        |--- PcdWrite (…)

    |         |                 |---CalulateCRC(…)

    |         |                 |       |--- WriteRawRC (…)

    |         |                 |       |       |---SPIWriteByte(…)

    |         |                 |       |--- ClearBitMask (…)

    |         |                |        |       |--- ReadRawRC(…)

    |         |                 |       |       |       |---SPIWriteByte(…)

    |         |                 |       |       |       |---SPIReadByte(…)

    |         |                 |       |       |--- WriteRawRC(…)

    |         |                 |        |               |---SPIWriteByte(…)

    |         |                 |       |--- SetBitMask (…)

    |         |                 |       |       |--- ReadRawRC (…)

    |         |                 |        |      |      |---SPIWriteByte(…)

    |         |                 |       |       |      |---SPIReadByte(…)

    |         |                 |       |       |--- WriteRawRC (…)

    |         |                 |       |       |       |---SPIWriteByte(…)

    |         |                 |       |--- ReadRawRC(…)

    |         |                 |        |      |---SPIWriteByte(…)

    |         |                 |---PcdComMF522(…)

    |         |                 |       |--- WriteRawRC (…)

    |         |                 |       |       |---SPIWriteByte(…)

    |         |                 |       |--- ClearBitMask (…)

    |         |                |       |       |--- ReadRawRC(…)

    |         |                 |       |       |       |---SPIWriteByte(…)

    |         |                 |       |       |       |---SPIReadByte(…)

    |         |                 |       |       |--- WriteRawRC(…)

    |         |                 |       |               |---SPIWriteByte(…)

    |         |                 |       |--- SetBitMask (…)

    |         |                 |       |       |--- ReadRawRC (…)

    |         |                |       |       |       |---SPIWriteByte(…)

    |         |                 |       |       |       |---SPIReadByte(…)

    |         |                 |       |       |--- WriteRawRC (…)

    |         |                 |       |       |       |---SPIWriteByte(…)

    |         |                 |       |--- ReadRawRC(…)

    |         |                 |                |---SPIWriteByte(…)

    |         |----PcdHalt (…)     |

    |                          |---CalulateCRC (…)

    |                 |         |--- WriteRawRC (…)

    |                 |         |       |---SPIWriteByte(…)

    |                 |         |--- ClearBitMask (…)

    |                 |         |        |---ReadRawRC(…)

    |                 |         |       |       |---SPIWriteByte(…)

    |                 |         |       |       |---SPIReadByte(…)

    |                 |         |       |--- WriteRawRC(…)

    |                 |         |        |      |---SPIWriteByte(…)

    |                 |         |--- SetBitMask (…)

    |                 |         |      |--- ReadRawRC (…)

    |                 |         |       |      |---SPIWriteByte(…)

    |                 |         |      |       |---SPIReadByte(…)

    |                 |         |      |--- WriteRawRC (…)

    |                 |         |      |       |---SPIWriteByte(…)

    |                 |         |--- ReadRawRC(…)

    |                 |         |      |---SPIWriteByte(…)

    |                 |---PcdComMF522 (…)

    |                           |--- WriteRawRC (…)

    |                           |       |---SPIWriteByte(…)

    |                           |--- ClearBitMask (…)

    |                           |       |--- ReadRawRC(…)

    |                           |       |      |---SPIWriteByte(…)

    |                           |      |       |---SPIReadByte(…)

    |                           |      |--- WriteRawRC(…)

    |                           |               |---SPIWriteByte(…)

    |                           |--- SetBitMask (…)

    |                           |      |--- ReadRawRC (…)

    |                           |      |       |---SPIWriteByte(…)

    |                           |      |       |---SPIReadByte(…)

    |                           |      |--- WriteRawRC (…)

    |                           |      |       |---SPIWriteByte(…)

    |                           |--- ReadRawRC(…)

    |                                   |---SPIWriteByte(…)

    |

    |----delay_welcome(100);

    |----Read_from_Card(…)

             |---- PcdRequest(…);  //寻天线区内未进入休眠状态的卡

             |        |--- ClearBitMask(…)

             |        |       |--- ReadRawRC(…)

             |        |       |       |---SPIWriteByte(…)

             |        |       |       |---SPIReadByte(…)

             |        |       |--- WriteRawRC(…)

             |        |                |---SPIWriteByte(…)

             |        |--- WriteRawRC(…)

             |        |       |--- SPIWriteByte(…)

             |        |--- SetBitMask(…)

             |        |       |--- ReadRawRC (…)

             |        |       |       |---SPIWriteByte(…)

             |        |       |       |---SPIReadByte(…)

             |        |       |--- WriteRawRC (…)

             |        |       |       |---SPIWriteByte(…)

             |        |--- PcdComMF522

             |                 |--- WriteRawRC (…)

             |                         |---SPIWriteByte(…)

             |                 |--- ClearBitMask (…)

             |                |       |--- ReadRawRC(…)

             |                 |       |      |---SPIWriteByte(…)

             |                 |       |      |---SPIReadByte(…)

             |                 |       |--- WriteRawRC(…)

             |                 |               |---SPIWriteByte(…)

             |                 |--- SetBitMask (…)

             |                 |       |--- ReadRawRC (…)

             |                 |       |      |---SPIWriteByte(…)

             |                 |       |      |---SPIReadByte(…)

             |                 |       |--- WriteRawRC (…)

             |                 |       |      |---SPIWriteByte(…)

             |                 |--- ReadRawRC(…)

             |                         |---SPIWriteByte(…)

             |---- PcdAnticoll(…)

             |        |--- ClearBitMask (…)

             |        |       |       |--- ReadRawRC(…)

             |        |       |       |       |---SPIWriteByte(…)

             |        |       |       |       |---SPIReadByte(…)

             |        |       |       |--- WriteRawRC(…)

             |        |       |               |---SPIWriteByte(…)

             |        |--- WriteRawRC (…)

             |        |       |---SPIWriteByte(…)

             |        |--- PcdComMF522 (…)

             |        |       |--- WriteRawRC (…)

             |        |       |       |---SPIWriteByte(…)

             |        |       |--- ClearBitMask (…)

             |       |        |      |--- ReadRawRC(…)

             |        |       |       |       |---SPIWriteByte(…)

             |        |        |      |       |---SPIReadByte(…)

             |        |       |       |--- WriteRawRC(…)

             |        |       |               |---SPIWriteByte(…)

             |        |       |--- SetBitMask (…)

             |        |       |       |--- ReadRawRC (…)

             |        |       |       |       |---SPIWriteByte(…)

             |        |       |       |       |---SPIReadByte(…)

             |        |       |       |--- WriteRawRC (…)

             |        |       |       |       |---SPIWriteByte(…)

             |        |       |--- ReadRawRC(…)

             |        |                |---SPIWriteByte(…)

             |        |--- SetBitMask (…)

             |        |      |--- ReadRawRC (…)

             |        |      |       |---SPIWriteByte(…)

             |        |      |       |---SPIReadByte(…)

             |        |      |--- WriteRawRC (…)

             |        |      |       |---SPIWriteByte(…)

             |----PcdSelect(…)

             |        |--- CalulateCRC (…)

             |        |       |--- WriteRawRC (…)

             |        |       |       |---SPIWriteByte(…)

             |        |       |--- ClearBitMask (…)

             |       |        |      |--- ReadRawRC(…)

             |        |       |       |       |---SPIWriteByte(…)

             |        |       |       |       |---SPIReadByte(…)

             |        |       |       |--- WriteRawRC(…)

             |        |       |               |---SPIWriteByte(…)

             |        |       |--- SetBitMask (…)

             |        |       |       |--- ReadRawRC (…)

             |        |       |       |       |---SPIWriteByte(…)

             |        |       |       |       |---SPIReadByte(…)

             |        |       |       |--- WriteRawRC (…)

             |        |       |       |       |---SPIWriteByte(…)

             |        |       |--- ReadRawRC(…)

             |        |                |---SPIWriteByte(…)

             |        |--- ClearBitMask (…)

             |        |       |       |--- ReadRawRC(…)

             |        |       |       |       |---SPIWriteByte(…)

             |        |       |       |       |---SPIReadByte(…)

             |        |       |       |--- WriteRawRC(…)

             |        |       |               |---SPIWriteByte(…)

             |        |--- PcdComMF522 (…)

             |        |       |--- WriteRawRC (…)

             |        |       |       |---SPIWriteByte(…)

             |        |       |--- ClearBitMask (…)

             |       |        |      |--- ReadRawRC(…)

             |        |       |       |       |---SPIWriteByte(…)

             |        |        |      |       |---SPIReadByte(…)

             |        |       |       |--- WriteRawRC(…)

             |        |       |               |---SPIWriteByte(…)

             |        |       |--- SetBitMask (…)

             |        |       |       |--- ReadRawRC (…)

             |        |       |       |       |---SPIWriteByte(…)

             |        |       |       |       |---SPIReadByte(…)

             |        |       |       |--- WriteRawRC (…)

             |        |       |       |       |---SPIWriteByte(…)

             |        |       |--- ReadRawRC(…)

             |        |                |---SPIWriteByte(…)

             |----PcdAuthState (…)

             |        |--- PcdComMF522 (…)

             |        |       |--- WriteRawRC (…)

             |        |       |       |---SPIWriteByte(…)

             |        |       |--- ClearBitMask (…)

             |       |        |      |--- ReadRawRC(…)

             |        |       |       |       |---SPIWriteByte(…)

             |        |       |       |       |---SPIReadByte(…)

             |        |       |       |--- WriteRawRC(…)

             |        |       |               |---SPIWriteByte(…)

             |        |       |--- SetBitMask (…)

             |        |       |       |--- ReadRawRC (…)

             |        |       |       |       |---SPIWriteByte(…)

             |        |       |       |       |---SPIReadByte(…)

             |        |       |       |--- WriteRawRC (…)

             |        |       |       |       |---SPIWriteByte(…)

             |        |       |--- ReadRawRC(…)

             |        |                |---SPIWriteByte(…)

             |        |--- ReadRawRC (…)

             |        |        |---SPIWriteByte(…)

             |        |       |---SPIReadByte(…)

             |        |--- PcdWrite (…)

             |                 |---CalulateCRC(…)

             |                 |       |--- WriteRawRC (…)

             |                 |       |       |---SPIWriteByte(…)

             |                 |       |--- ClearBitMask (…)

             |                |        |       |--- ReadRawRC(…)

             |                 |       |       |       |---SPIWriteByte(…)

              |                 |       |       |       |---SPIReadByte(…)

             |                 |       |       |--- WriteRawRC(…)

             |                 |        |               |---SPIWriteByte(…)

             |                 |       |--- SetBitMask (…)

             |                 |       |       |--- ReadRawRC (…)

             |                 |        |      |      |---SPIWriteByte(…)

             |                 |       |       |       |---SPIReadByte(…)

             |                 |       |       |--- WriteRawRC (…)

             |                 |       |       |       |---SPIWriteByte(…)

             |                 |       |--- ReadRawRC(…)

             |                |        |      |---SPIWriteByte(…)

             |                 |---PcdComMF522(…)

             |                 |       |--- WriteRawRC (…)

             |                 |       |       |---SPIWriteByte(…)

             |                 |       |--- ClearBitMask (…)

             |                |       |       |--- ReadRawRC(…)

             |                 |       |       |       |---SPIWriteByte(…)

             |                 |       |       |       |---SPIReadByte(…)

             |                |       |       |--- WriteRawRC(…)

             |                 |       |               |---SPIWriteByte(…)

             |                 |       |--- SetBitMask (…)

             |                 |       |       |--- ReadRawRC (…)

             |                |       |       |       |---SPIWriteByte(…)

             |                 |       |       |       |---SPIReadByte(…)

             |                 |       |       |--- WriteRawRC (…)

             |                 |       |       |       |---SPIWriteByte(…)

             |                 |       |--- ReadRawRC(…)

             |                 |                |---SPIWriteByte(…)

             |----PcdHalt (…)     |

                       |---CalulateCRC(…)

                     |         |--- WriteRawRC (…)

                     |         |       |---SPIWriteByte(…)

                     |         |--- ClearBitMask (…)

                     |         |        |---ReadRawRC(…)

                     |         |       |       |---SPIWriteByte(…)

                     |         |       |       |---SPIReadByte(…)

                     |         |       |--- WriteRawRC(…)

                     |         |        |      |---SPIWriteByte(…)

                     |         |--- SetBitMask (…)

                     |         |      |--- ReadRawRC (…)

                     |         |       |      |---SPIWriteByte(…)

                     |         |      |       |---SPIReadByte(…)

                     |         |      |--- WriteRawRC (…)

                     |         |      |       |---SPIWriteByte(…)

                     |         |--- ReadRawRC(…)

                     |         |      |---SPIWriteByte(…)

                     |---PcdComMF522 (…)

                               |--- WriteRawRC (…)

                               |       |---SPIWriteByte(…)

                               |--- ClearBitMask (…)

                               |       |--- ReadRawRC(…)

                               |       |      |---SPIWriteByte(…)

                               |      |       |---SPIReadByte(…)

                               |      |--- WriteRawRC(…)

                               |               |---SPIWriteByte(…)

                               |--- SetBitMask (…)

                               |      |--- ReadRawRC (…)

                               |      |       |---SPIWriteByte(…)

                               |      |       |---SPIReadByte(…)

                               |      |--- WriteRawRC (…)

                               |      |       |---SPIWriteByte(…)

                               |--- ReadRawRC(…)

                                       |---SPIWriteByte(…)

  • 相关阅读:
    主从复制之GTID(全局事务标识符)
    mysql8之MGR
    Headless Services无头服务
    面试题 01.01. 判定字符是否唯一
    344. 反转字符串
    1299. 将每个元素替换为右侧最大元素
    1528. 重新排列字符串
    832. 翻转图像
    1748. 唯一元素的和
    1365. 有多少小于当前数字的数字
  • 原文地址:https://www.cnblogs.com/alan666/p/8312313.html
Copyright © 2011-2022 走看看