SPI Master Test
Dependencies: mbed-rtos mbed st7565LCD
main.cpp@5:915a9d45c969, 2016-10-04 (annotated)
- Committer:
- ryood
- Date:
- Tue Oct 04 04:58:19 2016 +0000
- Revision:
- 5:915a9d45c969
- Parent:
- 4:c2b67c69d048
- Child:
- 6:66955ebd56dd
??????????
Who changed what in which revision?
User | Revision | Line number | New 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 | 5:915a9d45c969 | 5 | #define SPI_SPEED (4000000) |
ryood | 5:915a9d45c969 | 6 | #define SPI_DUMMY_DATA (0x55) |
ryood | 0:36cebc939c49 | 7 | |
ryood | 0:36cebc939c49 | 8 | BusIn Switches(PA_0, PA_1, PA_4, PB_0, PC_1, PC_0); |
ryood | 0:36cebc939c49 | 9 | |
ryood | 0:36cebc939c49 | 10 | SPI SpiM(PA_7, PA_6, PA_5); // mosi, miso, sclk |
ryood | 0:36cebc939c49 | 11 | DigitalOut SpiMCs(PB_6); |
ryood | 0:36cebc939c49 | 12 | |
ryood | 1:74e13cd94576 | 13 | InterruptIn stepChangeInterrupt(PC_7); |
ryood | 1:74e13cd94576 | 14 | |
ryood | 3:2b2c6c0e9f1d | 15 | //ST7565(PinName mosi, PinName sclk, PinName cs, PinName rst, PinName a0); |
ryood | 3:2b2c6c0e9f1d | 16 | ST7565 gLCD(PB_15, PB_13, PB_12, PB_2, PB_1); |
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 | 5:915a9d45c969 | 30 | #if DEVICE_SPI_ASYNCH |
ryood | 5:915a9d45c969 | 31 | printf("DEVICE_SPI_ASYNCH: defined\r\n"); |
ryood | 5:915a9d45c969 | 32 | #else |
ryood | 5:915a9d45c969 | 33 | printf("DEVICE_SPI_ASYNCH: not defined\r\n"); |
ryood | 5:915a9d45c969 | 34 | #endif |
ryood | 5:915a9d45c969 | 35 | |
ryood | 3:2b2c6c0e9f1d | 36 | // Setup LCD |
ryood | 0:36cebc939c49 | 37 | |
ryood | 3:2b2c6c0e9f1d | 38 | gLCD.begin(0x10); |
ryood | 3:2b2c6c0e9f1d | 39 | gLCD.drawstring(0, 0, "SPI Master Test"); |
ryood | 3:2b2c6c0e9f1d | 40 | gLCD.display(); |
ryood | 3:2b2c6c0e9f1d | 41 | |
ryood | 0:36cebc939c49 | 42 | // Setup Switches |
ryood | 0:36cebc939c49 | 43 | Switches.mode(PullUp); |
ryood | 0:36cebc939c49 | 44 | /* |
ryood | 0:36cebc939c49 | 45 | while(1) { |
ryood | 0:36cebc939c49 | 46 | printf("%x\r\n", ~Switches.read() &0x3f); |
ryood | 0:36cebc939c49 | 47 | Thread::wait(100); |
ryood | 0:36cebc939c49 | 48 | } |
ryood | 0:36cebc939c49 | 49 | */ |
ryood | 0:36cebc939c49 | 50 | |
ryood | 1:74e13cd94576 | 51 | // Setup Interrupt |
ryood | 1:74e13cd94576 | 52 | stepChangeInterrupt.fall(&setChangeStep); |
ryood | 1:74e13cd94576 | 53 | |
ryood | 0:36cebc939c49 | 54 | // Setup SPI |
ryood | 0:36cebc939c49 | 55 | SpiMCs = 1; |
ryood | 0:36cebc939c49 | 56 | SpiM.format(8, 0); |
ryood | 0:36cebc939c49 | 57 | SpiM.frequency(SPI_SPEED); |
ryood | 0:36cebc939c49 | 58 | |
ryood | 4:c2b67c69d048 | 59 | Thread::wait(1000); |
ryood | 4:c2b67c69d048 | 60 | //gLCD.clear(); |
ryood | 4:c2b67c69d048 | 61 | |
ryood | 5:915a9d45c969 | 62 | uint8_t count = 0; |
ryood | 0:36cebc939c49 | 63 | for (;;) { |
ryood | 5:915a9d45c969 | 64 | SpiMCs = 0; |
ryood | 5:915a9d45c969 | 65 | uint8_t receivedVal = SpiM.write(count); |
ryood | 5:915a9d45c969 | 66 | SpiMCs = 1; |
ryood | 5:915a9d45c969 | 67 | count++; |
ryood | 5:915a9d45c969 | 68 | if (isStepChanged) { |
ryood | 5:915a9d45c969 | 69 | char lineBuffer[20]; |
ryood | 5:915a9d45c969 | 70 | sprintf(lineBuffer, "Step: %02d", receivedVal); |
ryood | 5:915a9d45c969 | 71 | gLCD.drawstring(0, 0, lineBuffer); |
ryood | 5:915a9d45c969 | 72 | gLCD.display(); |
ryood | 5:915a9d45c969 | 73 | isStepChanged = false; |
ryood | 5:915a9d45c969 | 74 | |
ryood | 0:36cebc939c49 | 75 | } |
ryood | 5:915a9d45c969 | 76 | //Thread::wait(1); |
ryood | 5:915a9d45c969 | 77 | wait_us(100); |
ryood | 0:36cebc939c49 | 78 | } |
ryood | 0:36cebc939c49 | 79 | } |