Frank Duignan
/
NRF52832_ili9341
Basic driver working
main.cpp@81:7087ba9d18bb, 2021-02-20 (annotated)
- Committer:
- f3d
- Date:
- Sat Feb 20 16:34:49 2021 +0000
- Revision:
- 81:7087ba9d18bb
- Parent:
- 80:ff42f77928ad
Display driver working with touch input
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
f3d | 80:ff42f77928ad | 1 | /* ILI9341 interface for the NRF52832 |
hyungo | 77:9140e10d79ee | 2 | */ |
hyungo | 77:9140e10d79ee | 3 | |
Jonathan Austin |
0:2757d7abb7d9 | 4 | #include "mbed.h" |
f3d | 80:ff42f77928ad | 5 | #include "display.h" |
hyungo | 77:9140e10d79ee | 6 | /* Serial */ |
hyungo | 77:9140e10d79ee | 7 | #define BAUDRATE 9600 |
f3d | 79:a022f7789a49 | 8 | Serial g_Serial_pc(P0_18, P0_14, BAUDRATE); |
hyungo | 77:9140e10d79ee | 9 | |
hyungo | 77:9140e10d79ee | 10 | /* DigitalOut */ |
hyungo | 77:9140e10d79ee | 11 | #define LED_ON 0 |
hyungo | 77:9140e10d79ee | 12 | #define LED_OFF 1 |
f3d | 80:ff42f77928ad | 13 | |
f3d | 81:7087ba9d18bb | 14 | DigitalOut DataLED(A5, LED_OFF); |
f3d | 81:7087ba9d18bb | 15 | |
f3d | 80:ff42f77928ad | 16 | Display display; |
f3d | 80:ff42f77928ad | 17 | |
f3d | 80:ff42f77928ad | 18 | uint32_t prbs() |
f3d | 80:ff42f77928ad | 19 | { |
f3d | 80:ff42f77928ad | 20 | // This is an unverified 31 bit PRBS generator |
f3d | 80:ff42f77928ad | 21 | // It should be maximum length but this has not been verified |
f3d | 80:ff42f77928ad | 22 | static uint32_t shift_register=0xaa551199; |
f3d | 80:ff42f77928ad | 23 | unsigned long new_bit=0; |
f3d | 80:ff42f77928ad | 24 | static int busy=0; // need to prevent re-entrancy here |
f3d | 80:ff42f77928ad | 25 | if (!busy) |
f3d | 80:ff42f77928ad | 26 | { |
f3d | 80:ff42f77928ad | 27 | busy=1; |
f3d | 80:ff42f77928ad | 28 | new_bit= ((shift_register & (1<<27))>>27) ^ ((shift_register & (1<<30))>>30); |
f3d | 80:ff42f77928ad | 29 | new_bit= ~new_bit; |
f3d | 80:ff42f77928ad | 30 | new_bit = new_bit & 1; |
f3d | 80:ff42f77928ad | 31 | shift_register=shift_register << 1; |
f3d | 80:ff42f77928ad | 32 | shift_register=shift_register | (new_bit); |
f3d | 80:ff42f77928ad | 33 | busy=0; |
f3d | 80:ff42f77928ad | 34 | } |
f3d | 80:ff42f77928ad | 35 | return shift_register & 0x7ffffff; // return 31 LSB's |
f3d | 80:ff42f77928ad | 36 | } |
f3d | 80:ff42f77928ad | 37 | uint32_t random(uint32_t lower,uint32_t upper) |
f3d | 80:ff42f77928ad | 38 | { |
f3d | 80:ff42f77928ad | 39 | return (prbs()%(upper-lower))+lower; |
f3d | 80:ff42f77928ad | 40 | } |
hyungo | 77:9140e10d79ee | 41 | int main(void) { |
f3d | 80:ff42f77928ad | 42 | |
f3d | 81:7087ba9d18bb | 43 | int count; |
f3d | 81:7087ba9d18bb | 44 | |
f3d | 81:7087ba9d18bb | 45 | |
f3d | 80:ff42f77928ad | 46 | display.begin(); |
f3d | 81:7087ba9d18bb | 47 | while(1) |
f3d | 81:7087ba9d18bb | 48 | { |
f3d | 81:7087ba9d18bb | 49 | DataLED = !DataLED; |
f3d | 81:7087ba9d18bb | 50 | if (display.penDown()) |
f3d | 80:ff42f77928ad | 51 | { |
f3d | 81:7087ba9d18bb | 52 | display.print(display.readXTouch(),10,10,display.RGBToWord(0xff,0xff,0),display.RGBToWord(0,0,0)); |
f3d | 81:7087ba9d18bb | 53 | display.print(display.readYTouch(),80,10,display.RGBToWord(0xff,0xff,0),display.RGBToWord(0,0,0)); |
f3d | 81:7087ba9d18bb | 54 | } |
f3d | 81:7087ba9d18bb | 55 | display.drawRectangle(random(0,240),random(0,320),random(0,240),random(0,320),random(0,0xffff)); |
f3d | 81:7087ba9d18bb | 56 | //display.fillRectangle(random(0,240),random(0,320),random(0,240),random(0,320),random(0,0xffff)); |
f3d | 81:7087ba9d18bb | 57 | display.drawCircle(random(0,240),random(0,240),random(0,320),random(0,0xffff)); |
f3d | 81:7087ba9d18bb | 58 | //display.fillCircle(random(0,240),random(0,320),random(0,120),random(0,0xffff)); |
f3d | 81:7087ba9d18bb | 59 | count++; |
f3d | 81:7087ba9d18bb | 60 | if (count >= 10) |
f3d | 80:ff42f77928ad | 61 | { |
f3d | 81:7087ba9d18bb | 62 | display.fillRectangle(0,0,SCREEN_WIDTH,SCREEN_HEIGHT,0); |
f3d | 81:7087ba9d18bb | 63 | count = 0; |
f3d | 80:ff42f77928ad | 64 | } |
f3d | 80:ff42f77928ad | 65 | |
Jonathan Austin |
0:2757d7abb7d9 | 66 | } |
hyungo | 77:9140e10d79ee | 67 | |
hyungo | 77:9140e10d79ee | 68 | return 0; |
Jonathan Austin |
0:2757d7abb7d9 | 69 | } |