Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
main.cpp@6:11cf998faa50, 2019-05-02 (annotated)
- Committer:
- janusboandersen
- Date:
- Thu May 02 11:48:49 2019 +0000
- Revision:
- 6:11cf998faa50
- Parent:
- 5:b1ac24b6f25d
Remove pc. for printf - creates error on KL25Z
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| janusboandersen | 3:2507fc42675c | 1 | /* |
| janusboandersen | 3:2507fc42675c | 2 | * File : main.cpp |
| janusboandersen | 3:2507fc42675c | 3 | * License : MIT License |
| janusboandersen | 5:b1ac24b6f25d | 4 | * Version : 0.91 |
| janusboandersen | 3:2507fc42675c | 5 | * Author : Janus Bo Andersen (JA67494) |
| janusboandersen | 3:2507fc42675c | 6 | * Last edit : Janus |
| janusboandersen | 3:2507fc42675c | 7 | * Created on : 27 Apr 2019 |
| janusboandersen | 5:b1ac24b6f25d | 8 | * Last change: 2 May 2019 |
| janusboandersen | 3:2507fc42675c | 9 | * Description: Demo program for Mifare RC-522 RFID reader/writer chip. |
| janusboandersen | 3:2507fc42675c | 10 | * : Communicates with RFID reader, transmits card numbers to terminal |
| janusboandersen | 3:2507fc42675c | 11 | * : and toggles a digital pin upon reading a card. |
| janusboandersen | 3:2507fc42675c | 12 | * Structure : Uses SPI protocol to communicate with the RFID |
| janusboandersen | 3:2507fc42675c | 13 | * : Uses U(S)ART to communicate with connected computer/terminal. |
| janusboandersen | 3:2507fc42675c | 14 | * Adapted for: STM32 Nucleo L432KC, but can be adapted for NXP KL25Z. |
| janusboandersen | 5:b1ac24b6f25d | 15 | * Changelog : 27 Apr 2019: Created demo program |
| janusboandersen | 5:b1ac24b6f25d | 16 | : 02 May 2019: Update pin mappings for FRDM-KL25Z Board |
| janusboandersen | 5:b1ac24b6f25d | 17 | : 02 May 2019: Added set and reset for a latched circuit |
| janusboandersen | 3:2507fc42675c | 18 | */ |
| kirchnet | 2:a0c7513fb634 | 19 | |
| janusboandersen | 3:2507fc42675c | 20 | /*Connect as follows: |
| janusboandersen | 3:2507fc42675c | 21 | (should be connected to board standard pins) |
| janusboandersen | 5:b1ac24b6f25d | 22 | RFID pins -> Board pinName L432KC FRDM-KL25Z |
| janusboandersen | 5:b1ac24b6f25d | 23 | --------------------------------------------------------------------- |
| janusboandersen | 3:2507fc42675c | 24 | RFID IRQ = pin5 -> Not used. Leave open |
| janusboandersen | 5:b1ac24b6f25d | 25 | RFID MISO = pin4 -> SPI_MISO PA_6=D12 PTD3 |
| janusboandersen | 5:b1ac24b6f25d | 26 | RFID MOSI = pin3 -> SPI_MOSI PA_7=D11 PTD2 |
| janusboandersen | 5:b1ac24b6f25d | 27 | RFID SCK = pin2 -> SPI_SCK PA_5=D13 PTD1 |
| janusboandersen | 5:b1ac24b6f25d | 28 | RFID SDA = pin1 -> SPI_CS PB_6=D10 PTD0 |
| janusboandersen | 5:b1ac24b6f25d | 29 | RFID RST = pin7 -> PA_9=D8 PTA13 (or map sth. else) |
| janusboandersen | 3:2507fc42675c | 30 | |
| janusboandersen | 3:2507fc42675c | 31 | Power supply MUST BE 3.3V and GND to the respective pins. |
| janusboandersen | 3:2507fc42675c | 32 | */ |
| kirchnet | 2:a0c7513fb634 | 33 | #include "mbed.h" |
| kirchnet | 2:a0c7513fb634 | 34 | #include "MFRC522.h" |
| kirchnet | 2:a0c7513fb634 | 35 | |
| janusboandersen | 5:b1ac24b6f25d | 36 | // FRDM KL25Z Pins |
| janusboandersen | 5:b1ac24b6f25d | 37 | #define MF_RESET PTA13 //D8 //Or anything else |
| janusboandersen | 5:b1ac24b6f25d | 38 | #define SERIAL_TX PTE0 //UART0 |
| janusboandersen | 5:b1ac24b6f25d | 39 | #define SERIAL_RX PTE1 //UART0 |
| janusboandersen | 5:b1ac24b6f25d | 40 | #define SPI_MOSI PTD2 //PTC17 |
| janusboandersen | 5:b1ac24b6f25d | 41 | #define SPI_MISO PTD3 //PTA16 |
| janusboandersen | 5:b1ac24b6f25d | 42 | #define SPI_SCK PTD1 //PTA17 |
| janusboandersen | 5:b1ac24b6f25d | 43 | #define SPI_CS PTD0 //Chip select can be any digital pin |
| kirchnet | 2:a0c7513fb634 | 44 | |
| janusboandersen | 3:2507fc42675c | 45 | DigitalOut LedGreen(LED1); //for showing active signal on dev board |
| janusboandersen | 5:b1ac24b6f25d | 46 | DigitalOut LedPower(A1); //for toggling MOSFET ON |
| janusboandersen | 5:b1ac24b6f25d | 47 | DigitalOut LedPowerOff(A2); //for toggling MOSFET OFF |
| kirchnet | 2:a0c7513fb634 | 48 | |
| kirchnet | 2:a0c7513fb634 | 49 | //Serial connection to PC for output |
| kirchnet | 2:a0c7513fb634 | 50 | Serial pc(SERIAL_TX, SERIAL_RX); |
| kirchnet | 2:a0c7513fb634 | 51 | |
| janusboandersen | 3:2507fc42675c | 52 | //RFID object instantiated using board standard pins (find in your library) |
| janusboandersen | 3:2507fc42675c | 53 | MFRC522 RfChip (SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS, MF_RESET); |
| kirchnet | 2:a0c7513fb634 | 54 | |
| kirchnet | 2:a0c7513fb634 | 55 | int main(void) { |
| janusboandersen | 5:b1ac24b6f25d | 56 | printf("starting...\n"); |
| janusboandersen | 3:2507fc42675c | 57 | LedPower = 0; |
| kirchnet | 2:a0c7513fb634 | 58 | |
| kirchnet | 2:a0c7513fb634 | 59 | // Init. RC522 Chip |
| kirchnet | 2:a0c7513fb634 | 60 | RfChip.PCD_Init(); |
| kirchnet | 2:a0c7513fb634 | 61 | |
| kirchnet | 2:a0c7513fb634 | 62 | while (true) { |
| kirchnet | 2:a0c7513fb634 | 63 | LedGreen = 1; |
| kirchnet | 2:a0c7513fb634 | 64 | |
| kirchnet | 2:a0c7513fb634 | 65 | // Look for new cards |
| kirchnet | 2:a0c7513fb634 | 66 | if ( ! RfChip.PICC_IsNewCardPresent()) |
| kirchnet | 2:a0c7513fb634 | 67 | { |
| kirchnet | 2:a0c7513fb634 | 68 | wait_ms(500); |
| kirchnet | 2:a0c7513fb634 | 69 | continue; |
| kirchnet | 2:a0c7513fb634 | 70 | } |
| kirchnet | 2:a0c7513fb634 | 71 | |
| janusboandersen | 3:2507fc42675c | 72 | // Select one of the cards (avoiding collisions of multiple cards) |
| kirchnet | 2:a0c7513fb634 | 73 | if ( ! RfChip.PICC_ReadCardSerial()) |
| kirchnet | 2:a0c7513fb634 | 74 | { |
| kirchnet | 2:a0c7513fb634 | 75 | wait_ms(500); |
| kirchnet | 2:a0c7513fb634 | 76 | continue; |
| kirchnet | 2:a0c7513fb634 | 77 | } |
| kirchnet | 2:a0c7513fb634 | 78 | |
| janusboandersen | 3:2507fc42675c | 79 | LedGreen = 0; //blink off |
| kirchnet | 2:a0c7513fb634 | 80 | |
| janusboandersen | 3:2507fc42675c | 81 | //Toggle signal to the MOSFET |
| janusboandersen | 3:2507fc42675c | 82 | |
| janusboandersen | 3:2507fc42675c | 83 | LedPower = !LedPower; |
| janusboandersen | 3:2507fc42675c | 84 | // Print Card UID to serial interface |
| janusboandersen | 6:11cf998faa50 | 85 | printf("Card UID: "); |
| kirchnet | 2:a0c7513fb634 | 86 | for (uint8_t i = 0; i < RfChip.uid.size; i++) |
| kirchnet | 2:a0c7513fb634 | 87 | { |
| janusboandersen | 6:11cf998faa50 | 88 | printf(" %X02", RfChip.uid.uidByte[i]); |
| kirchnet | 2:a0c7513fb634 | 89 | } |
| janusboandersen | 6:11cf998faa50 | 90 | printf("\n\r"); |
| kirchnet | 2:a0c7513fb634 | 91 | |
| kirchnet | 2:a0c7513fb634 | 92 | // Print Card type |
| kirchnet | 2:a0c7513fb634 | 93 | uint8_t piccType = RfChip.PICC_GetType(RfChip.uid.sak); |
| janusboandersen | 6:11cf998faa50 | 94 | printf("PICC Type: %s \n\r", RfChip.PICC_GetTypeName(piccType)); |
| kirchnet | 2:a0c7513fb634 | 95 | wait_ms(1000); |
| janusboandersen | 5:b1ac24b6f25d | 96 | |
| janusboandersen | 5:b1ac24b6f25d | 97 | //Turn off latch (Jan's addition) |
| janusboandersen | 5:b1ac24b6f25d | 98 | wait_ms(500); |
| janusboandersen | 5:b1ac24b6f25d | 99 | LedPowerOff = !LedPower; |
| kirchnet | 2:a0c7513fb634 | 100 | } |
| kirchnet | 2:a0c7513fb634 | 101 | } |