SPI Master Test

Dependencies:   mbed-rtos mbed st7565LCD

Committer:
ryood
Date:
Sat Oct 01 14:10:19 2016 +0000
Revision:
3:2b2c6c0e9f1d
Parent:
2:95204570426c
Child:
4:c2b67c69d048
Impl. SPI LCD (ST7567)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ryood 0:36cebc939c49 1 #include "mbed.h"
ryood 0:36cebc939c49 2 #include "rtos.h"
ryood 3:2b2c6c0e9f1d 3 #include "st7565LCD.h"
ryood 0:36cebc939c49 4
ryood 0:36cebc939c49 5 #define SPI_SPEED (10000000)
ryood 0:36cebc939c49 6
ryood 0:36cebc939c49 7 BusIn Switches(PA_0, PA_1, PA_4, PB_0, PC_1, PC_0);
ryood 0:36cebc939c49 8
ryood 0:36cebc939c49 9 SPI SpiM(PA_7, PA_6, PA_5); // mosi, miso, sclk
ryood 0:36cebc939c49 10 DigitalOut SpiMCs(PB_6);
ryood 0:36cebc939c49 11
ryood 1:74e13cd94576 12 InterruptIn stepChangeInterrupt(PC_7);
ryood 1:74e13cd94576 13
ryood 3:2b2c6c0e9f1d 14 //ST7565(PinName mosi, PinName sclk, PinName cs, PinName rst, PinName a0);
ryood 3:2b2c6c0e9f1d 15 ST7565 gLCD(PB_15, PB_13, PB_12, PB_2, PB_1);
ryood 3:2b2c6c0e9f1d 16 PwmOut LCDBackLight(PA_11);
ryood 3:2b2c6c0e9f1d 17
ryood 1:74e13cd94576 18 volatile bool isStepChanged = false;
ryood 0:36cebc939c49 19 uint8_t prevSendVal = 0x00;
ryood 0:36cebc939c49 20
ryood 1:74e13cd94576 21 void setChangeStep()
ryood 1:74e13cd94576 22 {
ryood 1:74e13cd94576 23 isStepChanged = true;
ryood 1:74e13cd94576 24 }
ryood 1:74e13cd94576 25
ryood 0:36cebc939c49 26 int main()
ryood 0:36cebc939c49 27 {
ryood 0:36cebc939c49 28 printf("\r\n\nNucleo rtos SPI Master Test..\r\n");
ryood 0:36cebc939c49 29
ryood 3:2b2c6c0e9f1d 30 // Setup LCD
ryood 3:2b2c6c0e9f1d 31 LCDBackLight.period_ms(10);
ryood 3:2b2c6c0e9f1d 32 LCDBackLight = 0.6f;
ryood 3:2b2c6c0e9f1d 33 Thread::wait(10);
ryood 0:36cebc939c49 34
ryood 3:2b2c6c0e9f1d 35 gLCD.begin(0x10);
ryood 3:2b2c6c0e9f1d 36 gLCD.drawstring(0, 0, "SPI Master Test");
ryood 3:2b2c6c0e9f1d 37 gLCD.display();
ryood 3:2b2c6c0e9f1d 38
ryood 0:36cebc939c49 39 // Setup Switches
ryood 0:36cebc939c49 40 Switches.mode(PullUp);
ryood 0:36cebc939c49 41 /*
ryood 0:36cebc939c49 42 while(1) {
ryood 0:36cebc939c49 43 printf("%x\r\n", ~Switches.read() &0x3f);
ryood 0:36cebc939c49 44 Thread::wait(100);
ryood 0:36cebc939c49 45 }
ryood 0:36cebc939c49 46 */
ryood 0:36cebc939c49 47
ryood 1:74e13cd94576 48 // Setup Interrupt
ryood 1:74e13cd94576 49 stepChangeInterrupt.fall(&setChangeStep);
ryood 1:74e13cd94576 50
ryood 0:36cebc939c49 51 // Setup SPI
ryood 0:36cebc939c49 52 SpiMCs = 1;
ryood 0:36cebc939c49 53 SpiM.format(8, 0);
ryood 0:36cebc939c49 54 SpiM.frequency(SPI_SPEED);
ryood 0:36cebc939c49 55
ryood 0:36cebc939c49 56 for (;;) {
ryood 0:36cebc939c49 57 uint8_t sendVal = ~Switches.read();
ryood 0:36cebc939c49 58
ryood 2:95204570426c 59 if (prevSendVal != sendVal || isStepChanged) {
ryood 0:36cebc939c49 60 SpiMCs = 0;
ryood 2:95204570426c 61 uint8_t receivedVal = SpiM.write(sendVal);
ryood 0:36cebc939c49 62 SpiMCs = 1;
ryood 0:36cebc939c49 63
ryood 0:36cebc939c49 64 prevSendVal = sendVal;
ryood 2:95204570426c 65
ryood 2:95204570426c 66 if (isStepChanged) {
ryood 3:2b2c6c0e9f1d 67 char lineBuffer[32];
ryood 3:2b2c6c0e9f1d 68 sprintf(lineBuffer, "Step: %02d", receivedVal);
ryood 3:2b2c6c0e9f1d 69 gLCD.drawstring(0, 1, lineBuffer);
ryood 3:2b2c6c0e9f1d 70 gLCD.display();
ryood 2:95204570426c 71 isStepChanged = false;
ryood 2:95204570426c 72 }
ryood 0:36cebc939c49 73 }
ryood 0:36cebc939c49 74 }
ryood 0:36cebc939c49 75 }