STM8S003F3P6 - MFRC522

Thảo luận trong 'STM8'

Đang xem chủ đề này ( Thành viên: 0, Khách: 0)

  1. NgoHungCuong

    NgoHungCuong http://ngohungcuong.com

    Tham gia ngày:
    19/8/12
    Bài viết:
    4,061
    Đã được thích:
    9,152
    Điểm thành tích:
    69
    Giới tính:
    Nam
    Nghề nghiệp:
    Thất nghiệp
    Nơi ở:
    Lâm Thao - Phú Thọ
    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(charpData);

    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)115200UART1_WORDLENGTH_8DUART1_STOPBITS_1UART1_PARITY_NOUART1_SYNCMODE_CLOCK_DISABLEUART1_MODE_TXRX_ENABLE);
       
        
    UART1_Cmd(ENABLE);
       
        
    GPIO_DeInit(GPIOD);
        
    GPIO_Init(GPIODGPIO_PIN_3GPIO_MODE_OUT_PP_LOW_FAST);
        
    GPIO_WriteLow(GPIODGPIO_PIN_3);
       
        
    TM_MFRC522_Init();
       
       
        
    // Infinite loop.
        
    while(1) {
           
            if (
    TM_MFRC522_Check(CardID) == MI_OK) {
                
    GPIO_WriteHigh(GPIODGPIO_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(GPIODGPIO_PIN_3);
            }
        }
       
    }

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

    void assert_failed(u8fileu32 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) {
        }
    }
     

    Các file đính kèm:

    • RC552.rar
      Kích thước:
      57.9 KB
      Đọc:
      285
  2. NgoHungCuong

    NgoHungCuong http://ngohungcuong.com

    Tham gia ngày:
    19/8/12
    Bài viết:
    4,061
    Đã được thích:
    9,152
    Điểm thành tích:
    69
    Giới tính:
    Nam
    Nghề nghiệp:
    Thất nghiệp
    Nơi ở:
    Lâm Thao - Phú Thọ
    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.
    Để chuyển sang dùng cho dòng VĐK khác:
    - Sửa file "KT_spi.h"
    fig2.
    -Sửa file "KT_SPI.c"
    fig3.
    (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)
     

    Các file đính kèm:

    MinhTinkerer thích bài này.
  3. NgoHungCuong

    NgoHungCuong http://ngohungcuong.com

    Tham gia ngày:
    19/8/12
    Bài viết:
    4,061
    Đã được thích:
    9,152
    Điểm thành tích:
    69
    Giới tính:
    Nam
    Nghề nghiệp:
    Thất nghiệp
    Nơi ở:
    Lâm Thao - Phú Thọ
    Ví dụ ở trên kết hợp sử dụng SPI và UART.
    (ví dụ về SPI và UART đã viết ở phần trước)
    Kết quả thử nghiệm đọc ID thẻ và gửi lên máy tính.
    fig1. fig2.
     
    hainguyen9x4MinhTinkerer thích bài này.
  4. returnX

    returnX Kỹ sư

    Tham gia ngày:
    9/8/14
    Bài viết:
    390
    Đã được thích:
    228
    Điểm thành tích:
    43
    Giới tính:
    Nam
    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. ;))
     
    huunho thích bài này.
  5. tiennam191

    tiennam191 Kỹ sư

    Tham gia ngày:
    24/8/12
    Bài viết:
    277
    Đã được thích:
    426
    Điểm thành tích:
    63
    Giới tính:
    Nam
    Nghề nghiệp:
    Viện Công Nghệ Điện Tử
    Nơi ở:
    LINH KIỆN ĐIỆN TỬ E - GROUP
    mọi sai lầm đều trả giá bằng tiền mặt đó bạn :))
     
  6. westspring

    westspring Học sinh phổ thông

    Tham gia ngày:
    23/11/14
    Bài viết:
    1
    Đã được thích:
    0
    Điểm thành tích:
    1
    Giới tính:
    Nam
    chuong trinh cua a ngo hung cuong em bien dich bao loi uart1,em sua thanh uart2 rhi het loi nhung khong chay
     
  7. ga_cong

    ga_cong Kỹ sư

    Tham gia ngày:
    14/10/12
    Bài viết:
    295
    Đã được thích:
    123
    Điểm thành tích:
    43
    Giới tính:
    Nam
    stm8s003F3P6 làm gì có UART2 ?
     
  8. thanhhaihung

    thanhhaihung Học sinh phổ thông

    Tham gia ngày:
    3/2/15
    Bài viết:
    3
    Đã được thích:
    1
    Điểm thành tích:
    3
    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ỉ???
     
  9. NTT_GA69

    NTT_GA69 Học sinh phổ thông

    Tham gia ngày:
    20/2/17
    Bài viết:
    18
    Đã được thích:
    1
    Điểm thành tích:
    3
    Giới tính:
    Nam
    bác sửa đc lỗi đấy chưa :)
     
  10. MinhMinh2345

    MinhMinh2345 Học sinh phổ thông

    Tham gia ngày:
    16/10/17
    Bài viết:
    1
    Đã được thích:
    0
    Điểm thành tích:
    1
    Giới tính:
    Nữ
    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
     

Chia sẻ trang này