STM8S003F3P6 - MFRC522

NgoHungCuong

http://ngohungcuong.com
#1
Ví dụ về giao tiếp với RC522 sử dụng SPI
(Mình đính kèm luôn thư viện giao tiếp với RC522, có thể chuyển sang sử dụng với bất kỳ VĐK nào)
PHP:
#include "stm8s.h"
#include "stdio.h"
#include "KT_mfrc522.h"

void init(void);
void delay(unsigned long uDelay);
void UART_SendByte(uint8_t uData);
void UART_SendStr(char* pData);

void UART_SendByte(uint8_t uData) {
    UART1_SendData8(uData);
    while (UART1_GetFlagStatus(UART1_FLAG_TXE) == RESET);
}

void UART_SendStr(char *pData) {
    while(*pData != '\0') {
          UART_SendByte(*pData++);                    
    }
    UART_SendByte((uint8_t)0x0d);
    UART_SendByte((uint8_t)0x0d);
    UART_SendByte((uint8_t)0x0a);
}

void main(void) {
   
    uint8_t CardID[5];
    char szBuff[100];
   
    CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
    UART1_DeInit();
   
    UART1_Init((uint32_t)115200, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO, UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE);
   
    UART1_Cmd(ENABLE);
   
    GPIO_DeInit(GPIOD);
    GPIO_Init(GPIOD, GPIO_PIN_3, GPIO_MODE_OUT_PP_LOW_FAST);
    GPIO_WriteLow(GPIOD, GPIO_PIN_3);
   
    TM_MFRC522_Init();
   
   
    // Infinite loop.
    while(1) {
       
        if (TM_MFRC522_Check(CardID) == MI_OK) {
            GPIO_WriteHigh(GPIOD, GPIO_PIN_3);
            sprintf(szBuff, "%02X %02X %02X %02X %02X", CardID[0], CardID[1], CardID[2], CardID[3], CardID[4]);
            UART_SendStr(szBuff);
            delay(0xffffff);
        } else {
            GPIO_WriteLow(GPIOD, GPIO_PIN_3);
        }
    }
   
}

void delay(unsigned long uDelay) {
    while(--uDelay);
}

void assert_failed(u8* file, u32 line) { 
    /* User can add his own implementation to report the file name and line number,
    ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
    /* Infinite loop */
    while (1) {
    }
}
 

Đính kèm

NgoHungCuong

http://ngohungcuong.com
#2
Cách chuyển thư viện này sang dùng cho bất cứ dòng VĐK nào.
Thư viện bao gồm 4 file
fig1.png

Để chuyển sang dùng cho dòng VĐK khác:
- Sửa file "KT_spi.h"
fig2.png

-Sửa file "KT_SPI.c"
fig3.png

(Thư viện này không phải do mình tự viết, thư viện gốc được viết cho STM32F429, mình chỉ port sang)
 

Đính kèm

returnX

Kỹ sư
#4
Bác viết bài này sớm thì cậu gì đã không mất 100000 điểm tải cái của em rồi. Hj. Cái này hay hơn, cái của em chỉ dùng GPIO thôi. ;))
 

westspring

Học sinh phổ thông
#6
chuong trinh cua a ngo hung cuong em bien dich bao loi uart1,em sua thanh uart2 rhi het loi nhung khong chay
 

thanhhaihung

Học sinh phổ thông
#8
Bác ơi sao em lại bị code size limit nhỉ? Của em biên dịch ra cần hơn 9kB code. Trong khi con F3 chỉ có 8kB. Sao chíp của bác chủ thớt vẫn chạy được nhỉ???
 

MinhMinh2345

Học sinh phổ thông
#10
các bạn ơi? mình gặp chút rắc rối với stm8vaf rfid? code gặp vấn đề và không chạy. Mong các bạn giúp đỡ!
Source code spi stm8 khi mình chạy thì không đọc được mã thẻ! mình xài con stm8s003f và mfrc522
 

Quảng cáo Google