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