![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Hardware testing for M24SR-DISCOVERY demo PCB. as help to others
Set up to use MB1138 M24SR-DISCOVERY PCB http://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/st25-nfc-rfid-eval-boards/st25-nfc-rfid-eval-boards/m24sr-discovery.html with MBED system. based on https://developer.mbed.org/users/hudakz/code/STM32F103C8T6_Hello/ code and https://developer.mbed.org/users/wim/notebook/m24sr64-nfcrfid-tag-with-i2c-interface/ Which lead me to look at Peter Drescher's work on ILI9341 LCD controller
https://developer.mbed.org/users/dreschpe/code/SPI_TFT_ILI9341/
main.cpp
- Committer:
- lloydg
- Date:
- 2016-09-29
- Revision:
- 2:2033db202017
File content as of revision 2:2033db202017:
#include "STM32F103RGT6.h" #include "stdio.h" #include "mbed.h" #include "SPI_TFT_ILI9341.h" //#include "string" // errors? #include "Arial12x12.h" #include "Arial24x23.h" #include "Arial28x28.h" #include "font_big.h" // the TFT is connected to SPI pin PB_15, PB_14, PB_13, PB_12, NC, PC_6, mosi, miso, sclk, cs, reset, dc SPI_TFT_ILI9341 TFT(PB_15, PB_14, PB_13, PB_12, NC, PC_6,"TFT"); // mosi, miso, sclk, cs, reset, dc //If your display need a signal for switch the backlight use a aditional IO pin in your program Serial pc(PC_10, PC_11); DigitalOut led1(LED1); DigitalOut led2(LED2); DigitalOut led3(LED3); DigitalOut led4(LED4); DigitalIn joyleft(PB_5); DigitalIn joysel(PB_6); DigitalIn joydown(PB_7); DigitalIn joyright(PB_8); DigitalIn joyup(PB_9); AnalogIn line(BT_RESET); DigitalIn BT_1(BT_GPIO1); //DigitalIn BT_2(BT_RESET); DigitalIn BT_3(BT_POWER_ON); //Timer timer; //int begin, end; int buff[320]; int main() { int state =0; int pointx =0; int i; //timer.start(); //int pointy =0; TFT.claim(stdout); // send stdout to the TFT display //TFT.claim(stderr); // send stderr to the TFT display TFT.background(Black); // set background to black TFT.foreground(White); // set chars to white TFT.set_orientation(1); // 1 to set correct for m24sr-descovey TFT.newcls(); // clear the screen TFT.set_font((unsigned char*) Arial24x23); // select font 2 //TFT.line(0, 0, TFT.width(), TFT.height(), Red); //TFT.fillrect(200, 200, 100, 100, White); printf("width (%d)\n", TFT.width()); printf("height(%d)\n", TFT.height()); printf("columns (%d)\n", TFT.columns()); printf("rows(%d)\n", TFT.rows()); wait(5); TFT.locate(0,100); while(1) { if(!joyleft) { printf(" left\n"); pc.printf(" left\n"); TFT.cls(); state =1; } if(!joyright) { printf(" right\n"); pc.printf(" right\n"); TFT.cls(); state =2; } if(!joyup) { printf(" up\n"); pc.printf(" up\n"); TFT.cls(); state =3; } if(!joydown) { led4 = !led4; printf(" down\n"); pc.printf(" down\n"); state =4; } if(!joysel) { printf(" sel\n"); pc.printf(" sel\n"); state =5; } switch (state) { case 1: led1 = !led1; TFT.locate(0,0); printf("BT_1! (%x)\n", BT_1.read()); printf("BT_3! (%x)\n", BT_3.read()); wait(1); break; case 2: led2 = !led2; TFT.locate(0,0); printf("val! (%d)\n", line.read_u16()); // 3v3 = +65,535 printf("val! (%f)\n", line.read()); // 3v3 = ??? printf("val! (%x)\n", line.read_u16()); pc.printf("val! (%f)\n", line.read_u16()); wait(1); break; case 3: TFT.newcls(); // clear the screen //begin = timer.read_us(); for(i=0; i<320; i++) { buff[i] = (int) (TFT.height()-(line.read()*TFT.height())); } //end = timer.read_us(); for(pointx=0; pointx<320; pointx++) { TFT.pixel(pointx,buff[pointx], Green); } led3 = !led3; TFT.locate(0,0); //end = timer.read_us(); //printf("%d us", end - begin); // 1 read< 1uS break; default: TFT.newcls(); TFT.locate(0,100); printf(" nothing to see \n"); break; } wait(1); } }