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@5:b1ac24b6f25d, 2019-05-02 (annotated)
- Committer:
- janusboandersen
- Date:
- Thu May 02 11:46:17 2019 +0000
- Revision:
- 5:b1ac24b6f25d
- Parent:
- 4:60f9b48d9eb6
- Child:
- 6:11cf998faa50
Update pin mappings for KL25Z Board
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 | 
| kirchnet | 2:a0c7513fb634 | 85 | pc.printf("Card UID: "); | 
| kirchnet | 2:a0c7513fb634 | 86 | for (uint8_t i = 0; i < RfChip.uid.size; i++) | 
| kirchnet | 2:a0c7513fb634 | 87 | { | 
| kirchnet | 2:a0c7513fb634 | 88 | pc.printf(" %X02", RfChip.uid.uidByte[i]); | 
| kirchnet | 2:a0c7513fb634 | 89 | } | 
| kirchnet | 2:a0c7513fb634 | 90 | pc.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); | 
| kirchnet | 2:a0c7513fb634 | 94 | pc.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 | } |