add support for 320x240 st7789 display
This commit is contained in:
parent
a528e0ae28
commit
d4ea70b196
115 changed files with 5076 additions and 2477 deletions
|
|
@ -3,7 +3,7 @@
|
||||||
(general
|
(general
|
||||||
(thickness 1.6)
|
(thickness 1.6)
|
||||||
(drawings 4)
|
(drawings 4)
|
||||||
(tracks 386)
|
(tracks 389)
|
||||||
(zones 0)
|
(zones 0)
|
||||||
(modules 0)
|
(modules 0)
|
||||||
(nets 1)
|
(nets 1)
|
||||||
|
|
@ -333,7 +333,6 @@
|
||||||
(via (at 68.58 22.86) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
(via (at 68.58 22.86) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
||||||
(via (at 57.15 22.86) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
(via (at 57.15 22.86) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
||||||
(segment (start 50.8 26.67) (end 54.61 26.67) (width 1) (layer B.Cu) (net 0))
|
(segment (start 50.8 26.67) (end 54.61 26.67) (width 1) (layer B.Cu) (net 0))
|
||||||
(segment (start 74.93 24.13) (end 69.85 24.13) (width 1) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 54.61 26.67) (end 55.88 25.4) (width 1) (layer B.Cu) (net 0))
|
(segment (start 54.61 26.67) (end 55.88 25.4) (width 1) (layer B.Cu) (net 0))
|
||||||
(segment (start 50.8 21.59) (end 48.26 21.59) (width 1) (layer B.Cu) (net 0))
|
(segment (start 50.8 21.59) (end 48.26 21.59) (width 1) (layer B.Cu) (net 0))
|
||||||
(segment (start 48.26 21.59) (end 48.26 29.21) (width 1) (layer B.Cu) (net 0))
|
(segment (start 48.26 21.59) (end 48.26 29.21) (width 1) (layer B.Cu) (net 0))
|
||||||
|
|
@ -463,7 +462,6 @@
|
||||||
(segment (start 105.41 34.29) (end 105.41 35.56) (width 1) (layer B.Cu) (net 0))
|
(segment (start 105.41 34.29) (end 105.41 35.56) (width 1) (layer B.Cu) (net 0))
|
||||||
(segment (start 93.98 34.29) (end 101.6 34.29) (width 1) (layer B.Cu) (net 0))
|
(segment (start 93.98 34.29) (end 101.6 34.29) (width 1) (layer B.Cu) (net 0))
|
||||||
(segment (start 83.82 24.13) (end 93.98 34.29) (width 1) (layer B.Cu) (net 0))
|
(segment (start 83.82 24.13) (end 93.98 34.29) (width 1) (layer B.Cu) (net 0))
|
||||||
(segment (start 74.93 24.13) (end 83.82 24.13) (width 1) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 95.25 43.18) (end 93.98 43.18) (width 1) (layer B.Cu) (net 0))
|
(segment (start 95.25 43.18) (end 93.98 43.18) (width 1) (layer B.Cu) (net 0))
|
||||||
(segment (start 93.98 43.18) (end 91.44 43.18) (width 1) (layer B.Cu) (net 0))
|
(segment (start 93.98 43.18) (end 91.44 43.18) (width 1) (layer B.Cu) (net 0))
|
||||||
(segment (start 101.6 36.83) (end 97.79 36.83) (width 1) (layer B.Cu) (net 0))
|
(segment (start 101.6 36.83) (end 97.79 36.83) (width 1) (layer B.Cu) (net 0))
|
||||||
|
|
@ -501,5 +499,10 @@
|
||||||
(segment (start 107.95 24.13) (end 101.6 24.13) (width 1) (layer B.Cu) (net 0))
|
(segment (start 107.95 24.13) (end 101.6 24.13) (width 1) (layer B.Cu) (net 0))
|
||||||
(segment (start 110.49 81.28) (end 110.49 26.67) (width 1) (layer B.Cu) (net 0))
|
(segment (start 110.49 81.28) (end 110.49 26.67) (width 1) (layer B.Cu) (net 0))
|
||||||
(segment (start 110.49 81.28) (end 110.49 95.25) (width 1) (layer F.Cu) (net 0))
|
(segment (start 110.49 81.28) (end 110.49 95.25) (width 1) (layer F.Cu) (net 0))
|
||||||
|
(segment (start 69.85 24.13) (end 72.39 26.67) (width 1) (layer B.Cu) (net 0))
|
||||||
|
(segment (start 72.39 26.67) (end 74.93 26.67) (width 1) (layer B.Cu) (net 0))
|
||||||
|
(segment (start 78.742792 24.13) (end 83.82 24.13) (width 1) (layer B.Cu) (net 0))
|
||||||
|
(segment (start 76.202792 26.67) (end 78.742792 24.13) (width 1) (layer B.Cu) (net 0))
|
||||||
|
(segment (start 74.93 26.67) (end 76.202792 26.67) (width 1) (layer B.Cu) (net 0))
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
(general
|
(general
|
||||||
(thickness 1.6)
|
(thickness 1.6)
|
||||||
(drawings 5)
|
(drawings 5)
|
||||||
(tracks 360)
|
(tracks 361)
|
||||||
(zones 0)
|
(zones 0)
|
||||||
(modules 0)
|
(modules 0)
|
||||||
(nets 1)
|
(nets 1)
|
||||||
|
|
@ -179,7 +179,7 @@
|
||||||
(via (at 213.741 50.673) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DC5CBDB))
|
(via (at 213.741 50.673) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DC5CBDB))
|
||||||
(via (at 213.741 53.213) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DC5CBDC))
|
(via (at 213.741 53.213) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DC5CBDC))
|
||||||
(via (at 213.741 53.213) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DC5CBDD))
|
(via (at 213.741 53.213) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DC5CBDD))
|
||||||
(via (at 181.739941 85.957485) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DC5CBDF) (status 1000000))
|
(via (at 181.739941 85.957485) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DC5CBDF))
|
||||||
(via (at 184.279941 85.957485) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DC5CBE1))
|
(via (at 184.279941 85.957485) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DC5CBE1))
|
||||||
(via (at 186.819941 85.957485) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DC5CBE3))
|
(via (at 186.819941 85.957485) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DC5CBE3))
|
||||||
(via (at 189.359941 85.957485) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DC5CBE5))
|
(via (at 189.359941 85.957485) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5DC5CBE5))
|
||||||
|
|
@ -328,15 +328,11 @@
|
||||||
(segment (start 181.739941 64.010941) (end 181.737 64.008) (width 1) (layer B.Cu) (net 0))
|
(segment (start 181.739941 64.010941) (end 181.737 64.008) (width 1) (layer B.Cu) (net 0))
|
||||||
(segment (start 189.359941 64.010941) (end 189.357 64.008) (width 1) (layer B.Cu) (net 0))
|
(segment (start 189.359941 64.010941) (end 189.357 64.008) (width 1) (layer B.Cu) (net 0))
|
||||||
(segment (start 189.359941 68.939485) (end 189.359941 64.010941) (width 1) (layer B.Cu) (net 0))
|
(segment (start 189.359941 68.939485) (end 189.359941 64.010941) (width 1) (layer B.Cu) (net 0))
|
||||||
(segment (start 199.519941 68.939485) (end 199.519941 66.296941) (width 1) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 197.231 64.008) (end 199.519941 66.296941) (width 1) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 191.897 64.008) (end 197.231 64.008) (width 1) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 176.53 43.053) (end 176.53 64.008) (width 1) (layer F.Cu) (net 0))
|
(segment (start 176.53 43.053) (end 176.53 64.008) (width 1) (layer F.Cu) (net 0))
|
||||||
(via (at 176.53 88.392) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
(via (at 176.53 88.392) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
||||||
(via (at 176.53 91.059) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
(via (at 176.53 91.059) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
||||||
(via (at 207.137 91.059) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
(via (at 207.137 91.059) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
||||||
(segment (start 207.139941 91.056059) (end 207.137 91.059) (width 1) (layer B.Cu) (net 0))
|
(segment (start 207.139941 91.056059) (end 207.137 91.059) (width 1) (layer B.Cu) (net 0))
|
||||||
(segment (start 207.139941 85.957485) (end 207.139941 91.056059) (width 1) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 176.53 88.392) (end 176.53 91.059) (width 1) (layer B.Cu) (net 0))
|
(segment (start 176.53 88.392) (end 176.53 91.059) (width 1) (layer B.Cu) (net 0))
|
||||||
(segment (start 176.53 91.059) (end 207.137 91.059) (width 1) (layer F.Cu) (net 0))
|
(segment (start 176.53 91.059) (end 207.137 91.059) (width 1) (layer F.Cu) (net 0))
|
||||||
(segment (start 176.53 64.008) (end 176.53 66.548) (width 1) (layer B.Cu) (net 0))
|
(segment (start 176.53 64.008) (end 176.53 66.548) (width 1) (layer B.Cu) (net 0))
|
||||||
|
|
@ -389,7 +385,6 @@
|
||||||
(via (at 176.53 85.979) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
(via (at 176.53 85.979) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
||||||
(segment (start 179.07 66.548) (end 179.07 85.979) (width 1) (layer F.Cu) (net 0))
|
(segment (start 179.07 66.548) (end 179.07 85.979) (width 1) (layer F.Cu) (net 0))
|
||||||
(segment (start 176.53 66.548) (end 176.53 88.392) (width 1) (layer F.Cu) (net 0))
|
(segment (start 176.53 66.548) (end 176.53 88.392) (width 1) (layer F.Cu) (net 0))
|
||||||
(segment (start 199.519941 68.939485) (end 199.519941 70.717485) (width 1) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 189.357 70.714544) (end 189.359941 70.717485) (width 1) (layer B.Cu) (net 0))
|
(segment (start 189.357 70.714544) (end 189.359941 70.717485) (width 1) (layer B.Cu) (net 0))
|
||||||
(segment (start 189.357 64.008) (end 189.357 70.714544) (width 1) (layer B.Cu) (net 0))
|
(segment (start 189.357 64.008) (end 189.357 70.714544) (width 1) (layer B.Cu) (net 0))
|
||||||
(segment (start 186.819941 70.717485) (end 186.819941 68.326) (width 1) (layer B.Cu) (net 0))
|
(segment (start 186.819941 70.717485) (end 186.819941 68.326) (width 1) (layer B.Cu) (net 0))
|
||||||
|
|
@ -405,7 +400,6 @@
|
||||||
(segment (start 196.977 69.342) (end 196.979941 69.344941) (width 1) (layer B.Cu) (net 0))
|
(segment (start 196.977 69.342) (end 196.979941 69.344941) (width 1) (layer B.Cu) (net 0))
|
||||||
(segment (start 194.439941 69.344941) (end 194.439941 71.752059) (width 1) (layer B.Cu) (net 0))
|
(segment (start 194.439941 69.344941) (end 194.439941 71.752059) (width 1) (layer B.Cu) (net 0))
|
||||||
(segment (start 194.437 69.342) (end 194.439941 69.344941) (width 1) (layer B.Cu) (net 0))
|
(segment (start 194.437 69.342) (end 194.439941 69.344941) (width 1) (layer B.Cu) (net 0))
|
||||||
(segment (start 191.899941 69.344941) (end 191.899941 71.752059) (width 1) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 191.897 69.342) (end 191.899941 69.344941) (width 1) (layer B.Cu) (net 0))
|
(segment (start 191.897 69.342) (end 191.899941 69.344941) (width 1) (layer B.Cu) (net 0))
|
||||||
(segment (start 208.026 118.237) (end 214.884 118.237) (width 1) (layer B.Cu) (net 0))
|
(segment (start 208.026 118.237) (end 214.884 118.237) (width 1) (layer B.Cu) (net 0))
|
||||||
(segment (start 191.899941 102.110941) (end 208.026 118.237) (width 1) (layer B.Cu) (net 0))
|
(segment (start 191.899941 102.110941) (end 208.026 118.237) (width 1) (layer B.Cu) (net 0))
|
||||||
|
|
@ -478,5 +472,12 @@
|
||||||
(segment (start 207.01 61.341) (end 207.01 64.008) (width 1) (layer B.Cu) (net 0))
|
(segment (start 207.01 61.341) (end 207.01 64.008) (width 1) (layer B.Cu) (net 0))
|
||||||
(segment (start 146.812 94.615) (end 146.812 125.857) (width 1) (layer B.Cu) (net 0))
|
(segment (start 146.812 94.615) (end 146.812 125.857) (width 1) (layer B.Cu) (net 0))
|
||||||
(segment (start 148.717 92.71) (end 146.812 94.615) (width 1) (layer B.Cu) (net 0))
|
(segment (start 148.717 92.71) (end 146.812 94.615) (width 1) (layer B.Cu) (net 0))
|
||||||
|
(segment (start 199.517 70.714544) (end 199.519941 70.717485) (width 1) (layer B.Cu) (net 0))
|
||||||
|
(segment (start 199.517 69.5325) (end 199.517 70.714544) (width 1) (layer B.Cu) (net 0))
|
||||||
|
(segment (start 199.519941 70.717485) (end 199.519941 71.752059) (width 1) (layer B.Cu) (net 0))
|
||||||
|
(segment (start 191.897 70.714544) (end 191.899941 70.717485) (width 1) (layer B.Cu) (net 0))
|
||||||
|
(segment (start 191.897 64.008) (end 191.897 70.714544) (width 1) (layer B.Cu) (net 0))
|
||||||
|
(segment (start 204.599941 88.521941) (end 204.599941 85.957485) (width 1) (layer B.Cu) (net 0))
|
||||||
|
(segment (start 207.137 91.059) (end 204.599941 88.521941) (width 1) (layer B.Cu) (net 0))
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
(general
|
(general
|
||||||
(thickness 1.6)
|
(thickness 1.6)
|
||||||
(drawings 4)
|
(drawings 4)
|
||||||
(tracks 343)
|
(tracks 344)
|
||||||
(zones 0)
|
(zones 0)
|
||||||
(modules 0)
|
(modules 0)
|
||||||
(nets 1)
|
(nets 1)
|
||||||
|
|
@ -307,12 +307,9 @@
|
||||||
(segment (start 146.177 29.718) (end 146.05 29.591) (width 1) (layer B.Cu) (net 0))
|
(segment (start 146.177 29.718) (end 146.05 29.591) (width 1) (layer B.Cu) (net 0))
|
||||||
(segment (start 158.784583 26.254417) (end 157.988 27.051) (width 0.8) (layer B.Cu) (net 0))
|
(segment (start 158.784583 26.254417) (end 157.988 27.051) (width 0.8) (layer B.Cu) (net 0))
|
||||||
(segment (start 158.784583 25.364137) (end 158.784583 26.254417) (width 0.8) (layer B.Cu) (net 0))
|
(segment (start 158.784583 25.364137) (end 158.784583 26.254417) (width 0.8) (layer B.Cu) (net 0))
|
||||||
(segment (start 176.403 28.06572) (end 176.403 28.067) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 179.104583 25.364137) (end 176.403 28.06572) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 149.987 19.939) (end 149.225 20.701) (width 0.8) (layer B.Cu) (net 0))
|
(segment (start 149.987 19.939) (end 149.225 20.701) (width 0.8) (layer B.Cu) (net 0))
|
||||||
(segment (start 149.225 27.432) (end 149.86 28.067) (width 0.8) (layer B.Cu) (net 0))
|
(segment (start 149.225 27.432) (end 149.86 28.067) (width 0.8) (layer B.Cu) (net 0))
|
||||||
(segment (start 149.225 20.701) (end 149.225 27.432) (width 0.8) (layer B.Cu) (net 0))
|
(segment (start 149.225 20.701) (end 149.225 27.432) (width 0.8) (layer B.Cu) (net 0))
|
||||||
(segment (start 176.403 28.067) (end 149.86 28.067) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 184.15 29.718) (end 151.13 29.718) (width 0.8) (layer B.Cu) (net 0))
|
(segment (start 184.15 29.718) (end 151.13 29.718) (width 0.8) (layer B.Cu) (net 0))
|
||||||
(segment (start 161.324583 21.554137) (end 162.052 22.281554) (width 0.8) (layer F.Cu) (net 0))
|
(segment (start 161.324583 21.554137) (end 162.052 22.281554) (width 0.8) (layer F.Cu) (net 0))
|
||||||
(segment (start 162.941 38.98772) (end 161.324583 40.604137) (width 1) (layer F.Cu) (net 0))
|
(segment (start 162.941 38.98772) (end 161.324583 40.604137) (width 1) (layer F.Cu) (net 0))
|
||||||
|
|
@ -458,5 +455,9 @@
|
||||||
(segment (start 112.915183 34.230625) (end 94.809625 34.230625) (width 0.8) (layer B.Cu) (net 0))
|
(segment (start 112.915183 34.230625) (end 94.809625 34.230625) (width 0.8) (layer B.Cu) (net 0))
|
||||||
(segment (start 112.915183 36.770625) (end 94.674375 36.770625) (width 0.8) (layer B.Cu) (net 0))
|
(segment (start 112.915183 36.770625) (end 94.674375 36.770625) (width 0.8) (layer B.Cu) (net 0))
|
||||||
(segment (start 112.915183 39.310625) (end 94.801375 39.310625) (width 0.8) (layer B.Cu) (net 0))
|
(segment (start 112.915183 39.310625) (end 94.801375 39.310625) (width 0.8) (layer B.Cu) (net 0))
|
||||||
|
(segment (start 174.710248 28.067) (end 174.498 28.067) (width 0.8) (layer B.Cu) (net 0))
|
||||||
|
(segment (start 174.498 28.067) (end 149.86 28.067) (width 0.8) (layer B.Cu) (net 0))
|
||||||
|
(segment (start 176.40172 28.067) (end 179.104583 25.364137) (width 0.8) (layer B.Cu) (net 0))
|
||||||
|
(segment (start 174.498 28.067) (end 176.40172 28.067) (width 0.8) (layer B.Cu) (net 0))
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -1,508 +0,0 @@
|
||||||
(kicad_pcb (version 20171130) (host pcbnew "(5.0.1-3-g963ef8bb5)")
|
|
||||||
|
|
||||||
(general
|
|
||||||
(thickness 1.6)
|
|
||||||
(drawings 4)
|
|
||||||
(tracks 389)
|
|
||||||
(zones 0)
|
|
||||||
(modules 0)
|
|
||||||
(nets 1)
|
|
||||||
)
|
|
||||||
|
|
||||||
(page A4)
|
|
||||||
(layers
|
|
||||||
(0 F.Cu signal)
|
|
||||||
(31 B.Cu signal)
|
|
||||||
(32 B.Adhes user)
|
|
||||||
(33 F.Adhes user)
|
|
||||||
(34 B.Paste user)
|
|
||||||
(35 F.Paste user)
|
|
||||||
(36 B.SilkS user)
|
|
||||||
(37 F.SilkS user)
|
|
||||||
(38 B.Mask user)
|
|
||||||
(39 F.Mask user)
|
|
||||||
(40 Dwgs.User user)
|
|
||||||
(41 Cmts.User user)
|
|
||||||
(42 Eco1.User user)
|
|
||||||
(43 Eco2.User user)
|
|
||||||
(44 Edge.Cuts user)
|
|
||||||
(45 Margin user)
|
|
||||||
(46 B.CrtYd user)
|
|
||||||
(47 F.CrtYd user)
|
|
||||||
(48 B.Fab user)
|
|
||||||
(49 F.Fab user)
|
|
||||||
)
|
|
||||||
|
|
||||||
(setup
|
|
||||||
(last_trace_width 0.8)
|
|
||||||
(trace_clearance 0.2)
|
|
||||||
(zone_clearance 0.508)
|
|
||||||
(zone_45_only no)
|
|
||||||
(trace_min 0.2)
|
|
||||||
(segment_width 0.2)
|
|
||||||
(edge_width 0.15)
|
|
||||||
(via_size 1.8)
|
|
||||||
(via_drill 0.4)
|
|
||||||
(via_min_size 0.4)
|
|
||||||
(via_min_drill 0.3)
|
|
||||||
(uvia_size 0.3)
|
|
||||||
(uvia_drill 0.1)
|
|
||||||
(uvias_allowed no)
|
|
||||||
(uvia_min_size 0.2)
|
|
||||||
(uvia_min_drill 0.1)
|
|
||||||
(pcb_text_width 0.3)
|
|
||||||
(pcb_text_size 1.5 1.5)
|
|
||||||
(mod_edge_width 0.15)
|
|
||||||
(mod_text_size 1 1)
|
|
||||||
(mod_text_width 0.15)
|
|
||||||
(pad_size 1.524 1.524)
|
|
||||||
(pad_drill 0.762)
|
|
||||||
(pad_to_mask_clearance 0.051)
|
|
||||||
(solder_mask_min_width 0.25)
|
|
||||||
(aux_axis_origin 0 0)
|
|
||||||
(visible_elements FFFFFF7F)
|
|
||||||
(pcbplotparams
|
|
||||||
(layerselection 0x010fc_ffffffff)
|
|
||||||
(usegerberextensions false)
|
|
||||||
(usegerberattributes false)
|
|
||||||
(usegerberadvancedattributes false)
|
|
||||||
(creategerberjobfile false)
|
|
||||||
(excludeedgelayer true)
|
|
||||||
(linewidth 0.150000)
|
|
||||||
(plotframeref false)
|
|
||||||
(viasonmask false)
|
|
||||||
(mode 1)
|
|
||||||
(useauxorigin false)
|
|
||||||
(hpglpennumber 1)
|
|
||||||
(hpglpenspeed 20)
|
|
||||||
(hpglpendiameter 15.000000)
|
|
||||||
(psnegative false)
|
|
||||||
(psa4output false)
|
|
||||||
(plotreference true)
|
|
||||||
(plotvalue true)
|
|
||||||
(plotinvisibletext false)
|
|
||||||
(padsonsilk false)
|
|
||||||
(subtractmaskfromsilk false)
|
|
||||||
(outputformat 1)
|
|
||||||
(mirror false)
|
|
||||||
(drillshape 1)
|
|
||||||
(scaleselection 1)
|
|
||||||
(outputdirectory ""))
|
|
||||||
)
|
|
||||||
|
|
||||||
(net 0 "")
|
|
||||||
|
|
||||||
(net_class Default "This is the default net class."
|
|
||||||
(clearance 0.2)
|
|
||||||
(trace_width 0.8)
|
|
||||||
(via_dia 1.8)
|
|
||||||
(via_drill 0.4)
|
|
||||||
(uvia_dia 0.3)
|
|
||||||
(uvia_drill 0.1)
|
|
||||||
)
|
|
||||||
|
|
||||||
(net_class neti ""
|
|
||||||
(clearance 0.2)
|
|
||||||
(trace_width 0.8)
|
|
||||||
(via_dia 3)
|
|
||||||
(via_drill 0.4)
|
|
||||||
(uvia_dia 0.3)
|
|
||||||
(uvia_drill 0.1)
|
|
||||||
)
|
|
||||||
|
|
||||||
(gr_line (start 144.018 44.577) (end 144.018 18.415) (layer Edge.Cuts) (width 0.15))
|
|
||||||
(gr_line (start 189.738 44.704) (end 143.891 44.704) (layer Edge.Cuts) (width 0.15))
|
|
||||||
(gr_line (start 189.865 18.415) (end 189.865 44.323) (layer Edge.Cuts) (width 0.15))
|
|
||||||
(gr_line (start 144.018 18.415) (end 189.865 18.415) (layer Edge.Cuts) (width 0.15))
|
|
||||||
|
|
||||||
(via (at 176.564583 25.364137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D07))
|
|
||||||
(via (at 186.724583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D08))
|
|
||||||
(via (at 156.244583 40.604137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D1A))
|
|
||||||
(via (at 174.024583 40.604137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D1B))
|
|
||||||
(via (at 176.564583 40.604137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D1C))
|
|
||||||
(via (at 179.104583 40.604137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D1D))
|
|
||||||
(via (at 174.024583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D1E))
|
|
||||||
(via (at 186.724583 25.364137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D1F))
|
|
||||||
(via (at 179.104583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D20))
|
|
||||||
(via (at 181.644583 25.364137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D21))
|
|
||||||
(via (at 184.184583 25.364137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D22))
|
|
||||||
(via (at 176.564583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D23))
|
|
||||||
(via (at 181.644583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D24))
|
|
||||||
(via (at 186.724583 25.364137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D25))
|
|
||||||
(via (at 186.724583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D26))
|
|
||||||
(via (at 184.184583 25.364137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D27))
|
|
||||||
(via (at 184.184583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D28))
|
|
||||||
(via (at 176.564583 25.364137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D29))
|
|
||||||
(via (at 179.104583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D2A))
|
|
||||||
(via (at 158.784583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D2B))
|
|
||||||
(via (at 158.784583 25.364137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D2C))
|
|
||||||
(via (at 171.484583 25.364137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D2D))
|
|
||||||
(via (at 181.644583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D2E))
|
|
||||||
(via (at 179.104583 25.364137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D2F))
|
|
||||||
(via (at 184.184583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D30))
|
|
||||||
(via (at 181.644583 25.364137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D31))
|
|
||||||
(via (at 174.024583 25.364137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D32))
|
|
||||||
(via (at 174.024583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D33))
|
|
||||||
(via (at 171.484583 25.364137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D34))
|
|
||||||
(via (at 171.484583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D35))
|
|
||||||
(via (at 168.944583 25.364137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D36))
|
|
||||||
(via (at 168.944583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D37))
|
|
||||||
(via (at 166.404583 25.364137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D38))
|
|
||||||
(via (at 166.404583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D39))
|
|
||||||
(via (at 163.864583 25.364137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D3A))
|
|
||||||
(via (at 163.864583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D3B))
|
|
||||||
(via (at 161.324583 25.364137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D3C))
|
|
||||||
(via (at 161.324583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D3D))
|
|
||||||
(via (at 158.784583 25.364137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D3E))
|
|
||||||
(via (at 158.784583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D3F))
|
|
||||||
(via (at 156.244583 25.364137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D40))
|
|
||||||
(via (at 158.784583 40.604137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D41))
|
|
||||||
(via (at 156.244583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D42))
|
|
||||||
(via (at 163.864583 40.604137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D43))
|
|
||||||
(via (at 153.704583 25.364137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D44))
|
|
||||||
(via (at 153.704583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D45))
|
|
||||||
(via (at 161.324583 40.604137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D46))
|
|
||||||
(via (at 153.704583 25.364137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D47))
|
|
||||||
(via (at 153.704583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D48))
|
|
||||||
(via (at 153.704583 25.364137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D49))
|
|
||||||
(via (at 153.704583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D4A))
|
|
||||||
(via (at 156.244583 25.364137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D4B))
|
|
||||||
(via (at 176.564583 25.364137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D4C))
|
|
||||||
(via (at 156.244583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D4D))
|
|
||||||
(via (at 186.724583 40.604137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D4F))
|
|
||||||
(via (at 184.184583 40.604137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D50))
|
|
||||||
(via (at 181.644583 40.604137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D51))
|
|
||||||
(via (at 153.704583 25.364137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D52))
|
|
||||||
(via (at 153.704583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D53))
|
|
||||||
(via (at 156.244583 25.364137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D54))
|
|
||||||
(via (at 156.244583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D55))
|
|
||||||
(via (at 174.024583 25.364137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D56))
|
|
||||||
(via (at 166.404583 40.604137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D57))
|
|
||||||
(via (at 158.784583 25.364137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D58))
|
|
||||||
(via (at 158.784583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D59))
|
|
||||||
(via (at 161.324583 25.364137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D5A))
|
|
||||||
(via (at 161.324583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D5B))
|
|
||||||
(via (at 163.864583 25.364137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D5C))
|
|
||||||
(via (at 163.864583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D5D))
|
|
||||||
(via (at 166.404583 25.364137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D5E))
|
|
||||||
(via (at 166.404583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D5F))
|
|
||||||
(via (at 168.944583 25.364137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D60))
|
|
||||||
(via (at 168.944583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D61))
|
|
||||||
(via (at 171.484583 25.364137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D62))
|
|
||||||
(via (at 171.484583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D63))
|
|
||||||
(via (at 174.024583 25.364137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D64))
|
|
||||||
(via (at 174.024583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D65))
|
|
||||||
(via (at 176.564583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D66))
|
|
||||||
(via (at 184.184583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D67))
|
|
||||||
(via (at 186.724583 25.364137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D68))
|
|
||||||
(via (at 176.564583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D69))
|
|
||||||
(via (at 156.244583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D6A))
|
|
||||||
(via (at 161.324583 25.364137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D6B))
|
|
||||||
(via (at 153.704583 40.604137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D6C))
|
|
||||||
(via (at 176.564583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D6D))
|
|
||||||
(via (at 153.704583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D6E))
|
|
||||||
(via (at 174.024583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D6F))
|
|
||||||
(via (at 158.784583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D71))
|
|
||||||
(via (at 176.564583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D72))
|
|
||||||
(via (at 171.484583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D73))
|
|
||||||
(via (at 168.944583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D74))
|
|
||||||
(via (at 166.404583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D75))
|
|
||||||
(via (at 163.864583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D76))
|
|
||||||
(via (at 161.324583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D77))
|
|
||||||
(via (at 171.484583 40.604137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D78))
|
|
||||||
(via (at 179.104583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D79))
|
|
||||||
(via (at 168.944583 40.604137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D7A))
|
|
||||||
(via (at 181.644583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D7B))
|
|
||||||
(via (at 186.724583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D7C))
|
|
||||||
(via (at 153.704583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D7D))
|
|
||||||
(via (at 153.704583 25.364137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D7E))
|
|
||||||
(via (at 176.564583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D7F))
|
|
||||||
(via (at 179.104583 25.364137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D80))
|
|
||||||
(via (at 179.104583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D81))
|
|
||||||
(via (at 181.644583 25.364137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D82))
|
|
||||||
(via (at 181.644583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D83))
|
|
||||||
(via (at 184.184583 25.364137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D84))
|
|
||||||
(via (at 168.944583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D85))
|
|
||||||
(via (at 171.484583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D86))
|
|
||||||
(via (at 179.104583 25.364137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D87))
|
|
||||||
(via (at 161.324583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D88))
|
|
||||||
(via (at 163.864583 25.364137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D89))
|
|
||||||
(via (at 184.184583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D8A))
|
|
||||||
(via (at 163.864583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D8B))
|
|
||||||
(via (at 186.724583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D8C))
|
|
||||||
(via (at 166.404583 25.364137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D8D))
|
|
||||||
(via (at 166.404583 25.364137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D8E))
|
|
||||||
(via (at 168.944583 25.364137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065D8F))
|
|
||||||
(via (at 158.784583 21.554137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065F9A))
|
|
||||||
(via (at 163.864583 21.554137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065F9B))
|
|
||||||
(via (at 163.864583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065F9C))
|
|
||||||
(via (at 158.784583 21.554137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065F9D))
|
|
||||||
(via (at 158.784583 21.554137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065F9E))
|
|
||||||
(via (at 158.784583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065F9F))
|
|
||||||
(via (at 158.784583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA0))
|
|
||||||
(via (at 161.324583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA1))
|
|
||||||
(via (at 174.024583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA2))
|
|
||||||
(via (at 158.784583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA3))
|
|
||||||
(via (at 161.324583 21.554137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA4))
|
|
||||||
(via (at 161.324583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA5))
|
|
||||||
(via (at 161.324583 21.554137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA6))
|
|
||||||
(via (at 158.784583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA7))
|
|
||||||
(via (at 163.864583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA8))
|
|
||||||
(via (at 163.864583 21.554137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FA9))
|
|
||||||
(via (at 168.944583 21.554137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FAA))
|
|
||||||
(via (at 171.484583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FAB))
|
|
||||||
(via (at 163.864583 21.554137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FAC))
|
|
||||||
(via (at 168.944583 21.554137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FAD))
|
|
||||||
(via (at 168.944583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FAE))
|
|
||||||
(via (at 171.484583 21.554137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FAF))
|
|
||||||
(via (at 161.324583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB0))
|
|
||||||
(via (at 158.784583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB1))
|
|
||||||
(via (at 174.024583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB2))
|
|
||||||
(via (at 171.484583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB3))
|
|
||||||
(via (at 168.944583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB4))
|
|
||||||
(via (at 166.404583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB5))
|
|
||||||
(via (at 171.484583 21.554137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB6))
|
|
||||||
(via (at 171.484583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB7))
|
|
||||||
(via (at 168.944583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB8))
|
|
||||||
(via (at 174.024583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FB9))
|
|
||||||
(via (at 168.944583 21.554137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FBA))
|
|
||||||
(via (at 158.784583 21.554137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FBB))
|
|
||||||
(via (at 158.784583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FBC))
|
|
||||||
(via (at 166.404583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FBD))
|
|
||||||
(via (at 163.864583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FBE))
|
|
||||||
(via (at 166.404583 21.554137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FBF))
|
|
||||||
(via (at 174.024583 21.554137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC0))
|
|
||||||
(via (at 174.024583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC1))
|
|
||||||
(via (at 166.404583 21.554137) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC2))
|
|
||||||
(via (at 166.404583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC3))
|
|
||||||
(via (at 171.484583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC4))
|
|
||||||
(via (at 161.324583 21.554137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC5))
|
|
||||||
(via (at 161.324583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC6))
|
|
||||||
(via (at 163.864583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC7))
|
|
||||||
(via (at 166.404583 21.554137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC8))
|
|
||||||
(via (at 168.944583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FC9))
|
|
||||||
(via (at 171.484583 21.554137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FCA))
|
|
||||||
(via (at 158.784583 21.554137) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FCB))
|
|
||||||
(via (at 166.404583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E065FCC))
|
|
||||||
(via (at 174.024583 21.554137) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0661A3))
|
|
||||||
(via (at 174.024583 21.554137) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
|
||||||
(via (at 184.15 29.718) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
|
||||||
(via (at 184.15 37.338) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
|
||||||
(via (at 179.07 37.338) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
|
||||||
(via (at 173.99 37.338) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
|
||||||
(via (at 179.07 29.718) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
|
||||||
(via (at 173.99 29.718) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
|
||||||
(segment (start 184.184583 29.683417) (end 184.15 29.718) (width 1) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 156.244583 29.683417) (end 156.21 29.718) (width 1) (layer B.Cu) (net 0) (tstamp 5E0772AE))
|
|
||||||
(via (at 156.21 29.718) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0772B0))
|
|
||||||
(segment (start 146.084583 29.556417) (end 146.05 29.591) (width 1) (layer B.Cu) (net 0) (tstamp 5E0772AE))
|
|
||||||
(via (at 146.05 29.718) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0772B0))
|
|
||||||
(via (at 146.05 37.338) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0772B1))
|
|
||||||
(via (at 156.21 37.338) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0772B1))
|
|
||||||
(via (at 151.13 25.4) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E07763C))
|
|
||||||
(via (at 151.13 32.766) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E07763D))
|
|
||||||
(segment (start 151.164583 34.255417) (end 151.13 34.29) (width 1) (layer B.Cu) (net 0) (tstamp 5E07763B))
|
|
||||||
(via (at 151.13 34.29) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E07763C))
|
|
||||||
(via (at 151.13 41.91) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E07763D))
|
|
||||||
(segment (start 146.177 29.718) (end 146.05 29.591) (width 1) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 158.784583 26.254417) (end 157.988 27.051) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 158.784583 25.364137) (end 158.784583 26.254417) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 176.403 28.06572) (end 176.403 28.067) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 179.104583 25.364137) (end 176.403 28.06572) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 149.987 19.939) (end 149.225 20.701) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 149.225 27.432) (end 149.86 28.067) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 149.225 20.701) (end 149.225 27.432) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 176.403 28.067) (end 149.86 28.067) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 184.15 29.718) (end 151.13 29.718) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 161.324583 21.554137) (end 162.052 22.281554) (width 0.8) (layer F.Cu) (net 0))
|
|
||||||
(segment (start 162.941 38.98772) (end 161.324583 40.604137) (width 1) (layer F.Cu) (net 0))
|
|
||||||
(segment (start 184.15 22.352) (end 184.15 22.352) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 151.13 25.527) (end 151.13 26.035) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 152.146 27.051) (end 157.48 27.051) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 151.13 26.035) (end 152.146 27.051) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 157.988 27.051) (end 157.48 27.051) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 151.13 39.37) (end 151.13 41.91) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 151.511 38.989) (end 151.13 39.37) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 166.062238 38.989) (end 151.511 38.989) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 166.404583 39.331345) (end 166.062238 38.989) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 166.404583 40.604137) (end 166.404583 39.331345) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 151.13 29.718) (end 151.13 32.893) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 168.944583 39.331345) (end 166.951238 37.338) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 168.944583 40.604137) (end 168.944583 39.331345) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 166.951238 37.338) (end 156.21 37.338) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 171.484583 40.604137) (end 171.484583 38.896583) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 171.484583 38.896583) (end 168.148 35.56) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 168.148 35.56) (end 154.178 35.56) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 154.178 35.56) (end 152.4 37.338) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 152.4 37.338) (end 150.876 37.338) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 150.876 37.338) (end 151.892 37.338) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 146.05 37.338) (end 150.876 37.338) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 174.024583 37.372583) (end 173.99 37.338) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 174.024583 40.604137) (end 174.024583 37.372583) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 179.07 37.338) (end 177.292 37.338) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 176.564583 38.065417) (end 176.564583 40.604137) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 177.292 37.338) (end 176.564583 38.065417) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 182.37072 37.338) (end 179.104583 40.604137) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 184.15 37.338) (end 182.37072 37.338) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 174.024583 21.554137) (end 183.352137 21.554137) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 171.45 23.368) (end 171.484583 23.333417) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 180.975 23.368) (end 171.45 23.368) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 171.484583 23.333417) (end 171.484583 21.554137) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 181.644583 24.037583) (end 180.975 23.368) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 181.644583 25.364137) (end 181.644583 24.037583) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 168.944583 23.275583) (end 168.944583 21.554137) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 154.305 23.368) (end 169.037 23.368) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 153.704583 23.968417) (end 154.305 23.368) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 169.037 23.368) (end 168.944583 23.275583) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 153.704583 25.364137) (end 153.704583 23.968417) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 156.244583 41.876929) (end 156.244583 40.604137) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 156.912654 42.545) (end 156.244583 41.876929) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 188.722 21.463) (end 188.722 41.275) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 187.071 19.812) (end 188.722 21.463) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 187.452 42.545) (end 156.912654 42.545) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 188.722 41.275) (end 187.452 42.545) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 166.404583 21.554137) (end 166.404583 20.158417) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 166.751 19.812) (end 187.071 19.812) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 166.404583 20.158417) (end 166.751 19.812) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 163.864583 20.281345) (end 163.268238 19.685) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 163.864583 21.554137) (end 163.864583 20.281345) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 163.268238 19.685) (end 150.368 19.685) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 184.15 22.352) (end 184.15 29.21) (width 0.8) (layer B.Cu) (net 0) (tstamp 5E0A4353))
|
|
||||||
(via (at 184.15 22.352) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
|
||||||
(via (at 186.69 22.352) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
|
||||||
(segment (start 186.69 25.329554) (end 186.724583 25.364137) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 186.69 22.352) (end 186.69 25.329554) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 183.352137 21.554137) (end 184.15 22.352) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(via (at 148.59 31.115) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
|
||||||
(via (at 148.59 39.751) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
|
||||||
(segment (start 148.59 29.842208) (end 148.59 29.718) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 148.59 31.115) (end 148.59 29.842208) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 148.59 29.718) (end 146.05 29.718) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 151.13 29.718) (end 148.59 29.718) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(via (at 146.05 42.926) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
|
||||||
(segment (start 147.322792 42.926) (end 148.084792 43.688) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 146.05 42.926) (end 147.322792 42.926) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 148.084792 43.688) (end 158.877 43.688) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(via (at 146.05 40.767) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
|
||||||
(segment (start 147.574 40.767) (end 148.59 39.751) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 146.05 40.767) (end 147.574 40.767) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 148.59 32.387792) (end 148.59 39.751) (width 0.8) (layer F.Cu) (net 0))
|
|
||||||
(segment (start 148.59 31.115) (end 148.59 32.387792) (width 0.8) (layer F.Cu) (net 0))
|
|
||||||
(via (at 136.029183 39.310625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FCC))
|
|
||||||
(via (at 136.029183 34.230625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FCD))
|
|
||||||
(via (at 136.029183 34.230625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FCE))
|
|
||||||
(via (at 136.029183 39.310625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FCF))
|
|
||||||
(via (at 136.029183 39.310625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD0))
|
|
||||||
(via (at 136.029183 39.310625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD1))
|
|
||||||
(via (at 136.029183 39.310625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD2))
|
|
||||||
(via (at 136.029183 36.770625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD3))
|
|
||||||
(via (at 136.029183 24.070625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD4))
|
|
||||||
(via (at 136.029183 39.310625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD5))
|
|
||||||
(via (at 136.029183 36.770625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD6))
|
|
||||||
(via (at 136.029183 36.770625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD7))
|
|
||||||
(via (at 136.029183 36.770625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD8))
|
|
||||||
(via (at 136.029183 39.310625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FD9))
|
|
||||||
(via (at 136.029183 34.230625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FDA))
|
|
||||||
(via (at 136.029183 34.230625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FDB))
|
|
||||||
(via (at 136.029183 29.150625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FDC))
|
|
||||||
(via (at 136.029183 26.610625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FDD))
|
|
||||||
(via (at 136.029183 34.230625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FDE))
|
|
||||||
(via (at 136.029183 29.150625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FDF))
|
|
||||||
(via (at 136.029183 29.150625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE0))
|
|
||||||
(via (at 136.029183 26.610625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE1))
|
|
||||||
(via (at 136.029183 36.770625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE2))
|
|
||||||
(via (at 136.029183 39.310625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE3))
|
|
||||||
(via (at 136.029183 24.070625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE4))
|
|
||||||
(via (at 136.029183 26.610625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE5))
|
|
||||||
(via (at 136.029183 29.150625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE6))
|
|
||||||
(via (at 136.029183 31.690625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE7))
|
|
||||||
(via (at 136.029183 26.610625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE8))
|
|
||||||
(via (at 136.029183 26.610625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FE9))
|
|
||||||
(via (at 136.029183 29.150625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FEA))
|
|
||||||
(via (at 136.029183 24.070625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FEB))
|
|
||||||
(via (at 136.029183 29.150625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FEC))
|
|
||||||
(via (at 136.029183 39.310625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FED))
|
|
||||||
(via (at 136.029183 39.310625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FEE))
|
|
||||||
(via (at 136.029183 31.690625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FEF))
|
|
||||||
(via (at 136.029183 34.230625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF0))
|
|
||||||
(via (at 136.029183 31.690625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF1))
|
|
||||||
(via (at 136.029183 24.070625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF2))
|
|
||||||
(via (at 136.029183 24.070625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF3))
|
|
||||||
(via (at 136.029183 31.690625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF4))
|
|
||||||
(via (at 136.029183 31.690625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF5))
|
|
||||||
(via (at 136.029183 26.610625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF6))
|
|
||||||
(via (at 136.029183 36.770625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF7))
|
|
||||||
(via (at 136.029183 36.770625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF8))
|
|
||||||
(via (at 136.029183 34.230625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FF9))
|
|
||||||
(via (at 136.029183 31.690625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FFA))
|
|
||||||
(via (at 136.029183 29.150625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FFB))
|
|
||||||
(via (at 136.029183 26.610625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FFC))
|
|
||||||
(via (at 136.029183 39.310625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FFD))
|
|
||||||
(via (at 136.029183 31.690625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FFE))
|
|
||||||
(via (at 136.029183 24.070625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A4FFF))
|
|
||||||
(via (at 136.029183 24.070625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5000))
|
|
||||||
(via (at 112.915183 39.310625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51E4))
|
|
||||||
(via (at 112.915183 24.070625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51E5))
|
|
||||||
(via (at 112.915183 36.770625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51E6))
|
|
||||||
(via (at 112.915183 26.610625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51E7))
|
|
||||||
(via (at 112.915183 26.610625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51E8))
|
|
||||||
(via (at 112.915183 31.690625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51E9))
|
|
||||||
(via (at 112.915183 34.230625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51EA))
|
|
||||||
(via (at 112.915183 39.310625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51EB))
|
|
||||||
(via (at 112.915183 39.310625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51EC))
|
|
||||||
(via (at 112.915183 26.610625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51ED))
|
|
||||||
(via (at 112.915183 29.150625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51EE))
|
|
||||||
(via (at 112.915183 34.230625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51EF))
|
|
||||||
(via (at 112.915183 39.310625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51F0))
|
|
||||||
(via (at 112.915183 39.310625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51F1))
|
|
||||||
(via (at 112.915183 29.150625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51F2) (status 1000000))
|
|
||||||
(via (at 112.915183 26.610625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51F3))
|
|
||||||
(via (at 112.915183 34.230625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51F4))
|
|
||||||
(via (at 112.915183 29.150625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51F5))
|
|
||||||
(via (at 112.915183 29.150625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51F6))
|
|
||||||
(via (at 112.915183 39.310625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51F7))
|
|
||||||
(via (at 112.915183 36.770625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51F8))
|
|
||||||
(via (at 112.915183 39.310625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51F9))
|
|
||||||
(via (at 112.915183 26.610625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51FA))
|
|
||||||
(via (at 112.915183 36.770625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51FB))
|
|
||||||
(via (at 112.915183 39.310625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51FC))
|
|
||||||
(via (at 112.915183 36.770625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51FD))
|
|
||||||
(via (at 112.915183 34.230625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51FE))
|
|
||||||
(via (at 112.915183 24.070625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A51FF))
|
|
||||||
(via (at 112.915183 36.770625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5200))
|
|
||||||
(via (at 112.915183 34.230625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5201))
|
|
||||||
(via (at 112.915183 29.150625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5202))
|
|
||||||
(via (at 112.915183 24.070625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5203))
|
|
||||||
(via (at 112.915183 29.150625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5204))
|
|
||||||
(via (at 112.915183 39.310625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5205))
|
|
||||||
(via (at 112.915183 39.310625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5206))
|
|
||||||
(via (at 112.915183 31.690625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5207))
|
|
||||||
(via (at 112.915183 34.230625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5208))
|
|
||||||
(via (at 112.915183 31.690625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5209))
|
|
||||||
(via (at 112.915183 24.070625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A520A))
|
|
||||||
(via (at 112.915183 24.070625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A520B))
|
|
||||||
(via (at 112.915183 31.690625) (size 1.2) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A520C))
|
|
||||||
(via (at 112.915183 31.690625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A520D))
|
|
||||||
(via (at 112.915183 26.610625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A520E))
|
|
||||||
(via (at 112.915183 36.770625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A520F))
|
|
||||||
(via (at 112.915183 36.770625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5210))
|
|
||||||
(via (at 112.915183 34.230625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5211))
|
|
||||||
(via (at 112.915183 31.690625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5212))
|
|
||||||
(via (at 112.915183 29.150625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5213))
|
|
||||||
(via (at 112.915183 26.610625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5214))
|
|
||||||
(via (at 112.915183 39.310625) (size 1.5) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5215))
|
|
||||||
(via (at 112.915183 31.690625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5216))
|
|
||||||
(via (at 112.915183 24.070625) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5217))
|
|
||||||
(via (at 112.915183 24.070625) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0) (tstamp 5E0A5218))
|
|
||||||
(segment (start 112.915183 24.070625) (end 136.029183 24.070625) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 113.763711 26.610625) (end 136.029183 26.610625) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 112.915183 26.610625) (end 113.763711 26.610625) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 112.915183 29.150625) (end 136.029183 29.150625) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 112.915183 31.690625) (end 136.029183 31.690625) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 112.915183 34.230625) (end 136.029183 34.230625) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 112.915183 36.770625) (end 136.029183 36.770625) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 112.915183 39.310625) (end 136.029183 39.310625) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 157.511791 21.554137) (end 157.475928 21.59) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
(segment (start 157.511791 21.554137) (end 158.784583 21.554137) (width 0.8) (layer B.Cu) (net 0))
|
|
||||||
|
|
||||||
)
|
|
||||||
1358
MCUME_teensy/pcb_t4/mcumev4minkeys7789.kicad_pcb
Normal file
1358
MCUME_teensy/pcb_t4/mcumev4minkeys7789.kicad_pcb
Normal file
File diff suppressed because it is too large
Load diff
33
MCUME_teensy/pcb_t4/mcumev4minkeys7789.pro
Normal file
33
MCUME_teensy/pcb_t4/mcumev4minkeys7789.pro
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
update=22/05/2015 07:44:53
|
||||||
|
version=1
|
||||||
|
last_client=kicad
|
||||||
|
[general]
|
||||||
|
version=1
|
||||||
|
RootSch=
|
||||||
|
BoardNm=
|
||||||
|
[pcbnew]
|
||||||
|
version=1
|
||||||
|
LastNetListRead=
|
||||||
|
UseCmpFile=1
|
||||||
|
PadDrill=0.600000000000
|
||||||
|
PadDrillOvalY=0.600000000000
|
||||||
|
PadSizeH=1.500000000000
|
||||||
|
PadSizeV=1.500000000000
|
||||||
|
PcbTextSizeV=1.500000000000
|
||||||
|
PcbTextSizeH=1.500000000000
|
||||||
|
PcbTextThickness=0.300000000000
|
||||||
|
ModuleTextSizeV=1.000000000000
|
||||||
|
ModuleTextSizeH=1.000000000000
|
||||||
|
ModuleTextSizeThickness=0.150000000000
|
||||||
|
SolderMaskClearance=0.000000000000
|
||||||
|
SolderMaskMinWidth=0.000000000000
|
||||||
|
DrawSegmentWidth=0.200000000000
|
||||||
|
BoardOutlineThickness=0.100000000000
|
||||||
|
ModuleOutlineThickness=0.150000000000
|
||||||
|
[cvpcb]
|
||||||
|
version=1
|
||||||
|
NetIExt=net
|
||||||
|
[eeschema]
|
||||||
|
version=1
|
||||||
|
LibDir=
|
||||||
|
[eeschema/libraries]
|
||||||
1348
MCUME_teensy/pcb_t4/mcumev4minkeys9341.kicad_pcb
Normal file
1348
MCUME_teensy/pcb_t4/mcumev4minkeys9341.kicad_pcb
Normal file
File diff suppressed because it is too large
Load diff
33
MCUME_teensy/pcb_t4/mcumev4minkeys9341.pro
Normal file
33
MCUME_teensy/pcb_t4/mcumev4minkeys9341.pro
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
update=22/05/2015 07:44:53
|
||||||
|
version=1
|
||||||
|
last_client=kicad
|
||||||
|
[general]
|
||||||
|
version=1
|
||||||
|
RootSch=
|
||||||
|
BoardNm=
|
||||||
|
[pcbnew]
|
||||||
|
version=1
|
||||||
|
LastNetListRead=
|
||||||
|
UseCmpFile=1
|
||||||
|
PadDrill=0.600000000000
|
||||||
|
PadDrillOvalY=0.600000000000
|
||||||
|
PadSizeH=1.500000000000
|
||||||
|
PadSizeV=1.500000000000
|
||||||
|
PcbTextSizeV=1.500000000000
|
||||||
|
PcbTextSizeH=1.500000000000
|
||||||
|
PcbTextThickness=0.300000000000
|
||||||
|
ModuleTextSizeV=1.000000000000
|
||||||
|
ModuleTextSizeH=1.000000000000
|
||||||
|
ModuleTextSizeThickness=0.150000000000
|
||||||
|
SolderMaskClearance=0.000000000000
|
||||||
|
SolderMaskMinWidth=0.000000000000
|
||||||
|
DrawSegmentWidth=0.200000000000
|
||||||
|
BoardOutlineThickness=0.100000000000
|
||||||
|
ModuleOutlineThickness=0.150000000000
|
||||||
|
[cvpcb]
|
||||||
|
version=1
|
||||||
|
NetIExt=net
|
||||||
|
[eeschema]
|
||||||
|
version=1
|
||||||
|
LibDir=
|
||||||
|
[eeschema/libraries]
|
||||||
|
|
@ -4,17 +4,17 @@ Teensy 4.0 (2x14 pins) or Teensy 3.6 (2x24 pins inc bottom part)
|
||||||
GND X VIn (NC)
|
GND X VIn (NC)
|
||||||
(NC) 00 Ang (NC)
|
(NC) 00 Ang (NC)
|
||||||
(NC) 01 X 3.3v
|
(NC) 01 X 3.3v
|
||||||
VGA Blue (OPT2) 02 X 23 DISPLAY - CS (also RST for ST7789!)
|
JOY1 Fire 02 X X 23 RST for ST7789 DISPLAY
|
||||||
Key USER1 (OPT1) 03 X 22 VGA Hsync (OPT2)
|
Key USER1 (OPT1) 03 X X 22 DISPLAY - CS
|
||||||
Key USER2 (OPT1) 04 X 21 VGA Red (OPT2)
|
Key USER2 (OPT1) 04 X 21
|
||||||
VGA Red (OPT2) 05 20 VGA Red (OPT2)
|
JOY1 Left 05 X 20
|
||||||
VGA Green (OPT2) 06 19 I2C CLK (OPT1)
|
JOY1 Right 06 X 19 I2C CLK (OPT1)
|
||||||
VGA Green (OPT2) 07 18 I2C DAT (OPT1)
|
JOY1 Down 07 X 18 I2C DAT (OPT1)
|
||||||
VGA Green (OPT2) 08 X 17 JOY2 Fire
|
EXT SD CS 08 X 17 JOY2 Fire
|
||||||
DISPLAY - DC 09 X X 16 JOY2 AnalogY-A2
|
DISPLAY - DC 09 X X 16 JOY2 AnalogY-A2
|
||||||
Audio MSQL for T4 (OPT0) 10 X 15 JOY2 AnalogX-A1
|
Audio MSQL for T4 (OPT0) 10 X 15 JOY2 AnalogX-A1
|
||||||
DISPLAY - MOSI 11 X 14 VGA Blue (OPT2)
|
DISPLAY/EXT SD - MOSI 11 X X 14 JOY1 Up
|
||||||
MISO (Touch) for T3.6 (OPT2) 12 X 13 DISPLAY - SCK
|
MISO (Touch for T3.6 or EXT SD) 12 X 13 DISPLAY/EXT SD - SCK
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -23,21 +23,51 @@ Teensy 4.0 (2x14 pins) or Teensy 3.6 (2x24 pins inc bottom part)
|
||||||
(NC) 25 DAC0 Audio L for T3.6 (OPT0)
|
(NC) 25 DAC0 Audio L for T3.6 (OPT0)
|
||||||
(NC) 26 39 Key USER4 (OPT1)
|
(NC) 26 39 Key USER4 (OPT1)
|
||||||
(NC) 27 38 T_CS (Touch) for T3.6 (OPT2)
|
(NC) 27 38 T_CS (Touch) for T3.6 (OPT2)
|
||||||
(NC) 28 37 T_IRQ (Touch) for T3.6 (OPT2)
|
(NC) 28 37 PSRAM_CLK (OPT3) / T_IRQ (Touch) for T3.6 (OPT2)
|
||||||
VGA Vsync (OPT2) 29 36
|
29 36 PSRAM_CS (OPT3)
|
||||||
30 35
|
30 35 PSRAM_MOSI (OPT3)
|
||||||
31 34
|
31 34 PSRAM_MISO (OPT3)
|
||||||
32 33 Key USER3 (OPT1)
|
32 33 Key USER3 (OPT1)
|
||||||
|
|
||||||
|
|
||||||
Display: ILI9341/ST7789 (SPI connected, MISO not connected)
|
|
||||||
Storage: SD build-in (external SD requires extra CS)
|
|
||||||
|
|
||||||
(X) mandatory pins to connect for the minimum set-up
|
Teensy 3.6 old layout with VGA (2x24 pins inc bottom part)
|
||||||
|
----------------------------------------------------------
|
||||||
|
(NC) GND VIn (NC)
|
||||||
|
(NC) 00 Ang (NC)
|
||||||
|
(NC) 01 3.3v (NC)
|
||||||
|
VGA Blue (OPT) 02 X 23 Key RESET
|
||||||
|
I2C CLK (OPT) 03 22 VGA Hsync (OPT)
|
||||||
|
I2C DAT (OPT) 04 21 VGA Red (OPT)
|
||||||
|
VGA Red (OPT) 05 20 VGA Red (OPT)
|
||||||
|
VGA Green (OPT) 06 19 JOY1 Left (OPT)
|
||||||
|
VGA Green (OPT) 07 18 JOY1 Right (OPT)
|
||||||
|
VGA Green (OPT) 08 17 JOY1 Down (OPT)
|
||||||
|
ILI DC 09 X 16 JOY1 Up (OPT)
|
||||||
|
ILI CS 10 X 15 (NC)
|
||||||
|
ILI SDI+T_DIN-SPI MOSI 11 X 14 VGA Blue (OPT)
|
||||||
|
ILI SDO+T_DO-SPI MISO 12 X X 13 ILI SCK+T_CLK-SPI SCK
|
||||||
|
ILI VCC 3.3v X X GND ILI GND
|
||||||
|
(NC) 24 DAC1 Audio R (OPT)
|
||||||
|
(NC) 25 DAC0 Audio L (OPT)
|
||||||
|
(NC) 26 39 Key USER4 (OPT)
|
||||||
|
(NC) 27 X 38 ILI T_CS (Touch screen)
|
||||||
|
(NC) 28 X 37 ILI T_IRQ (Touch screen)
|
||||||
|
VGA Vsync (OPT) 29 36 JOY2 Fire
|
||||||
|
JOY1 Key FIRE(OPT) 30 X 35 Key USER1
|
||||||
|
JOY2 AnalogX-A12 31 X 34 Key USER2 (OPT)
|
||||||
|
JOY2 AnalogY-A13 32 X 33 Key USER3 (OPT)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Display: ILI9341/ST7789 (on main SPI, MISO not connected, RST optional or to 3.3v)
|
||||||
|
Storage: SD build-in (or external SD requires extra CS + main SPI 11,12 and 13)
|
||||||
|
|
||||||
|
(X) mandatory pins to connect for the minimum set-up (note that single joystick as JOY1 or JOY2 is possible via SWAP option)
|
||||||
(OPT0) audio output
|
(OPT0) audio output
|
||||||
(OPT1) keys required to play 'better' as for e.g. computer (I2C keyboard, 2 extra joystick buttons)
|
(OPT1) keys required to play 'better' as for e.g. computer (I2C keyboard, 2 extra joystick buttons)
|
||||||
(OPT2) for VGA output and ILI touch screen (for T3.6 only). ILI touch on same SPI as DISPLAY
|
(OPT2) for VGA output and ILI touch screen (for T3.6 only). ILI touch on main SPI as DISPLAY
|
||||||
|
(OPT3) for PSRAM on T4.0 only (with EXT SD only!!!)
|
||||||
|
|
||||||
The keys (all) are using internal pull-up so just connect the other side to the GND
|
The keys (all) are using internal pull-up so just connect the other side to the GND
|
||||||
The Analog joypad also needs VCC and GND connections !
|
The Analog joypad also needs VCC and GND connections !
|
||||||
|
|
|
||||||
|
|
@ -1373,7 +1373,7 @@ void emu_init(void)
|
||||||
|
|
||||||
|
|
||||||
emu_InitJoysticks();
|
emu_InitJoysticks();
|
||||||
#ifdef TEENSYBOY
|
#ifdef SWAP_JOYSTICK
|
||||||
joySwapped = true;
|
joySwapped = true;
|
||||||
#else
|
#else
|
||||||
joySwapped = false;
|
joySwapped = false;
|
||||||
|
|
|
||||||
|
|
@ -2,31 +2,17 @@
|
||||||
#define IOPINS_H
|
#define IOPINS_H
|
||||||
|
|
||||||
#include "platform_config.h"
|
#include "platform_config.h"
|
||||||
#include "tft_t_dma_config.h"
|
|
||||||
|
|
||||||
#ifndef OLD_LAYOUT
|
#ifndef OLD_LAYOUT
|
||||||
|
|
||||||
#ifdef ST7789
|
|
||||||
// ST7789
|
|
||||||
#define TFT_SCLK 13
|
#define TFT_SCLK 13
|
||||||
#define TFT_MOSI 11
|
#define TFT_MOSI 11
|
||||||
#define TFT_MISO 12
|
#define TFT_MISO 12
|
||||||
#define TFT_TOUCH_CS 255
|
#define TFT_TOUCH_CS 255
|
||||||
#define TFT_TOUCH_INT 255
|
#define TFT_TOUCH_INT 255
|
||||||
#define TFT_DC 9
|
#define TFT_DC 9
|
||||||
#define TFT_CS 255
|
#define TFT_CS 22 // 255 for LORES ST7789 (NO CS)
|
||||||
#define TFT_RST 23
|
#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V
|
||||||
#else
|
|
||||||
// ILI9341
|
|
||||||
#define TFT_SCLK 13
|
|
||||||
#define TFT_MOSI 11
|
|
||||||
#define TFT_MISO 12
|
|
||||||
#define TFT_TOUCH_CS 255 //38
|
|
||||||
#define TFT_TOUCH_INT 255 //37
|
|
||||||
#define TFT_DC 9
|
|
||||||
#define TFT_CS 23
|
|
||||||
#define TFT_RST 255
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// PSRAM
|
// PSRAM
|
||||||
#define PSRAM_CS 36
|
#define PSRAM_CS 36
|
||||||
|
|
@ -38,10 +24,10 @@
|
||||||
#define SD_SCLK 13
|
#define SD_SCLK 13
|
||||||
#define SD_MOSI 12
|
#define SD_MOSI 12
|
||||||
#define SD_MISO 11
|
#define SD_MISO 11
|
||||||
#ifdef TEENSYBOY
|
#ifdef EXTERNAL_SD
|
||||||
#define SD_CS BUILTIN_SDCARD
|
#define SD_CS 8
|
||||||
#else
|
#else
|
||||||
#define SD_CS 5
|
#define SD_CS BUILTIN_SDCARD
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// I2C keyboard
|
// I2C keyboard
|
||||||
|
|
@ -54,17 +40,15 @@
|
||||||
#define PIN_JOY2_BTN 17
|
#define PIN_JOY2_BTN 17
|
||||||
#define PIN_KEY_USER1 3 //34
|
#define PIN_KEY_USER1 3 //34
|
||||||
#define PIN_KEY_USER2 4 //35
|
#define PIN_KEY_USER2 4 //35
|
||||||
//#define PIN_KEY_USER3 255
|
//#define PIN_KEY_USER3 33
|
||||||
//#define PIN_KEY_USER4 255
|
//#define PIN_KEY_USER4 39
|
||||||
|
|
||||||
#ifdef TEENSYBOY
|
|
||||||
// Second joystick
|
// Second joystick
|
||||||
#define PIN_JOY1_BTN 2
|
#define PIN_JOY1_BTN 2
|
||||||
#define PIN_JOY1_1 14 // UP
|
#define PIN_JOY1_1 14 // UP
|
||||||
#define PIN_JOY1_2 7 // DOWN
|
#define PIN_JOY1_2 7 // DOWN
|
||||||
#define PIN_JOY1_3 6 // RIGHT
|
#define PIN_JOY1_3 6 // RIGHT
|
||||||
#define PIN_JOY1_4 5 // LEFT
|
#define PIN_JOY1_4 5 // LEFT
|
||||||
#endif
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
// OLD LAYOUT!!!!
|
// OLD LAYOUT!!!!
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,20 @@
|
||||||
#ifndef _PLATFORM_CONFIG_H_
|
#ifndef _PLATFORM_CONFIG_H_
|
||||||
#define _PLATFORM_CONFIG_H_
|
#define _PLATFORM_CONFIG_H_
|
||||||
|
|
||||||
//#define OLD_LAYOUT 1
|
//#define OLD_LAYOUT 1
|
||||||
//#define TEENSYBOY 1
|
|
||||||
|
|
||||||
//#define HAS_PSRAM 1
|
#define ILI9341 1
|
||||||
|
//#define ST7789 1
|
||||||
|
//#define SWAP_JOYSTICK 1
|
||||||
|
//#define LOHRES 1
|
||||||
|
//#define ROTATE_SCREEN 1
|
||||||
|
#define EXTERNAL_SD 1
|
||||||
|
|
||||||
//#define USE_SDFAT 1
|
#define HAS_PSRAM 1
|
||||||
//#define SD_FAT_TYPE 1
|
|
||||||
//#define USE_SDFS 1
|
//#define USE_SDFAT 1
|
||||||
//#define SDFSDEV "1:"
|
//#define SD_FAT_TYPE 1
|
||||||
|
//#define USE_SDFS 1
|
||||||
|
//#define SDFSDEV "1:"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = {
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static void dmaInterrupt() {
|
static void dmaInterrupt() {
|
||||||
dmatx.clearInterrupt();
|
dmatx.clearInterrupt();
|
||||||
curTransfer++;
|
curTransfer++;
|
||||||
|
|
@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t
|
||||||
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
||||||
int dx=0;
|
int dx=0;
|
||||||
int dy=0;
|
int dy=0;
|
||||||
|
|
||||||
#ifdef ST7789
|
#ifdef ST7789
|
||||||
|
if (TFT_REALWIDTH == TFT_REALHEIGHT)
|
||||||
|
{
|
||||||
#ifdef ROTATE_SCREEN
|
#ifdef ROTATE_SCREEN
|
||||||
if (!flipped) {
|
if (!flipped) {
|
||||||
dy += 80;
|
dy += 80;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if (flipped) {
|
if (flipped) {
|
||||||
dx += 80;
|
dx += 80;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_CASET);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(x1+dx);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(x2+dx);
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_PASET);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(y1+dy);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(y2+dy);
|
||||||
|
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_RAMWR);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
|
||||||
|
|
@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void TFT_T_DMA::begin(void) {
|
void TFT_T_DMA::begin(void) {
|
||||||
SPI.setMOSI(_mosi);
|
SPI.setMOSI(_mosi);
|
||||||
SPI.setMISO(_miso);
|
SPI.setMISO(_miso);
|
||||||
|
|
@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) {
|
||||||
SPI.begin();
|
SPI.begin();
|
||||||
|
|
||||||
// Initialize display
|
// Initialize display
|
||||||
if (_rst < 255) { // toggle RST low to reset
|
if (_rst != 0xff) {
|
||||||
pinMode(_rst, OUTPUT);
|
pinMode(_rst, OUTPUT);
|
||||||
digitalWrite(_rst, HIGH);
|
digitalWrite(_rst, HIGH);
|
||||||
delay(5);
|
delay(100);
|
||||||
digitalWrite(_rst, LOW);
|
digitalWrite(_rst, LOW);
|
||||||
delay(20);
|
delay(100);
|
||||||
digitalWrite(_rst, HIGH);
|
digitalWrite(_rst, HIGH);
|
||||||
delay(120);
|
delay(200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
const uint8_t *addr = init_commands;
|
const uint8_t *addr = init_commands;
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
|
@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) {
|
||||||
SPI.transfer(ILI9341_DISPON);
|
SPI.transfer(ILI9341_DISPON);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef ST7789
|
#ifdef ST7789
|
||||||
uint8_t numCommands, numArgs;
|
uint8_t numCommands, numArgs;
|
||||||
|
|
@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) {
|
||||||
if(ms) {
|
if(ms) {
|
||||||
ms = *addr++; // Read post-command delay time (ms)
|
ms = *addr++; // Read post-command delay time (ms)
|
||||||
if(ms == 255) ms = 500; // If 255, delay for 500 ms
|
if(ms == 255) ms = 500; // If 255, delay for 500 ms
|
||||||
SPI.endTransaction();
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
|
SPI.endTransaction();
|
||||||
delay(ms);
|
delay(ms);
|
||||||
//beginSPITransaction();
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
|
digitalWrite(_cs, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
digitalWrite(_cs, 1);
|
||||||
#endif
|
#endif
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
|
SPI.endTransaction();
|
||||||
|
|
||||||
cancelled = false;
|
cancelled = false;
|
||||||
|
|
||||||
#ifdef FLIP_SCREEN
|
#ifdef FLIP_SCREEN
|
||||||
flipscreen(true);
|
flipscreen(true);
|
||||||
#else
|
#else
|
||||||
flipscreen(false);
|
flipscreen(false);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef ST7789
|
||||||
|
if (TFT_REALWIDTH != TFT_REALHEIGHT)
|
||||||
|
{
|
||||||
|
flipscreen(true);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) {
|
||||||
#endif
|
#endif
|
||||||
dmatx = dmasettings[0];
|
dmatx = dmasettings[0];
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1);
|
||||||
digitalWrite(_dc, 0);
|
digitalWrite(_dc, 0);
|
||||||
SPI.transfer(TFT_RAMWR);
|
SPI.transfer(TFT_RAMWR);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
|
|
@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) {
|
||||||
No DMA functions
|
No DMA functions
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
SPI.transfer(TFT_RAMWR);
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
int i,j;
|
int i,j;
|
||||||
for (j=0; j<TFT_REALHEIGHT; j++)
|
for (j=0; j<TFT_REALHEIGHT; j++)
|
||||||
{
|
{
|
||||||
for (i=0; i<TFT_REALWIDTH; i++) {
|
for (i=0; i<TFT_REALWIDTH; i++) {
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(color);
|
SPI.transfer16(color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -643,24 +677,43 @@ void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) {
|
||||||
void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
|
||||||
setArea(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(x,y,x+w-1,y+h-1);
|
||||||
|
// digitalWrite(_dc, 0);
|
||||||
|
// SPI.transfer(TFT_RAMWR);
|
||||||
|
int i;
|
||||||
|
for (i=0; i<(w*h); i++)
|
||||||
|
{
|
||||||
|
//digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(color);
|
||||||
|
}
|
||||||
|
#ifdef ILI9341
|
||||||
digitalWrite(_dc, 0);
|
digitalWrite(_dc, 0);
|
||||||
SPI.transfer(TFT_RAMWR);
|
SPI.transfer(ILI9341_SLPOUT);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
#endif
|
||||||
|
digitalWrite(_cs, 1);
|
||||||
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
||||||
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
|
||||||
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
int i,j;
|
int i,j;
|
||||||
for (j=0; j<240; j++)
|
for (j=0; j<240; j++)
|
||||||
{
|
{
|
||||||
for (i=0; i<TFT_WIDTH; i++) {
|
for (i=0; i<TFT_WIDTH; i++) {
|
||||||
digitalWrite(_dc, 1);
|
// digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(*pcolors++);
|
SPI.transfer16(*pcolors++);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -670,9 +723,8 @@ void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) {
|
void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) {
|
||||||
|
|
@ -723,12 +775,12 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setArea(arx, ary, arx+arw-1, ary+arh-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(arx, ary, arx+arw-1, ary+arh-1);
|
||||||
SPI.transfer(TFT_RAMWR);
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
|
|
||||||
bitmap = bitmap + bmp_offy*w + bmp_offx;
|
bitmap = bitmap + bmp_offy*w + bmp_offx;
|
||||||
for (int row=0;row<arh; row++)
|
for (int row=0;row<arh; row++)
|
||||||
|
|
@ -737,7 +789,7 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
for (int col=0;col<arw; col++)
|
for (int col=0;col<arw; col++)
|
||||||
{
|
{
|
||||||
uint16_t color = *bmp_ptr++;
|
uint16_t color = *bmp_ptr++;
|
||||||
digitalWrite(_dc, 1);
|
// digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(color);
|
SPI.transfer16(color);
|
||||||
}
|
}
|
||||||
bitmap += w;
|
bitmap += w;
|
||||||
|
|
@ -747,9 +799,9 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
SPI.transfer(ILI9341_SLPOUT);
|
SPI.transfer(ILI9341_SLPOUT);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) {
|
void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) {
|
||||||
|
|
@ -757,20 +809,19 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
while ((c = *text++)) {
|
while ((c = *text++)) {
|
||||||
const unsigned char * charpt=&font8x8[c][0];
|
const unsigned char * charpt=&font8x8[c][0];
|
||||||
|
|
||||||
setArea(x,y,x+7,y+(doublesize?15:7));
|
|
||||||
|
|
||||||
//SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(x,y,x+7,y+(doublesize?15:7));
|
||||||
//digitalWrite(_dc, 0);
|
//digitalWrite(_dc, 0);
|
||||||
//SPI.transfer(TFT_RAMWR);
|
//SPI.transfer(TFT_RAMWR);
|
||||||
|
//digitalWrite(_dc, 1);
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
for (int i=0;i<8;i++)
|
for (int i=0;i<8;i++)
|
||||||
{
|
{
|
||||||
unsigned char bits;
|
unsigned char bits;
|
||||||
if (doublesize) {
|
if (doublesize) {
|
||||||
bits = *charpt;
|
bits = *charpt;
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
if (bits&0x01) SPI.transfer16(fgcolor);
|
if (bits&0x01) SPI.transfer16(fgcolor);
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
bits = bits >> 1;
|
bits = bits >> 1;
|
||||||
|
|
@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
}
|
}
|
||||||
bits = *charpt++;
|
bits = *charpt++;
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
if (bits&0x01) SPI.transfer16(fgcolor);
|
if (bits&0x01) SPI.transfer16(fgcolor);
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
bits = bits >> 1;
|
bits = bits >> 1;
|
||||||
|
|
@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) {
|
|
||||||
setArea(x,y,x+w-1,y+h-1);
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
SPI.transfer(TFT_RAMWR);
|
|
||||||
int i;
|
|
||||||
for (i=0; i<(w*h); i++)
|
|
||||||
{
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
SPI.transfer16(color);
|
|
||||||
}
|
|
||||||
#ifdef ILI9341
|
|
||||||
digitalWrite(_dc, 0);
|
|
||||||
SPI.transfer(ILI9341_SLPOUT);
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
#endif
|
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************************************
|
/***********************************************************************************************
|
||||||
DMA functions
|
DMA functions
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
|
|
|
||||||
|
|
@ -21,18 +21,15 @@
|
||||||
#define B16(rgb) ((rgb<<3)&0xf8)
|
#define B16(rgb) ((rgb<<3)&0xf8)
|
||||||
|
|
||||||
|
|
||||||
#define TFT_HEIGHT 240
|
#ifdef LOHRES
|
||||||
|
|
||||||
#ifdef ILI9341
|
|
||||||
#define TFT_WIDTH 320
|
|
||||||
#define TFT_REALWIDTH 320
|
|
||||||
#define TFT_REALHEIGHT 240
|
|
||||||
#endif
|
|
||||||
#ifdef ST7789
|
|
||||||
#define TFT_WIDTH 240
|
#define TFT_WIDTH 240
|
||||||
#define TFT_REALWIDTH 240
|
#define TFT_REALWIDTH 240
|
||||||
#define TFT_REALHEIGHT 240
|
#else
|
||||||
|
#define TFT_WIDTH 320
|
||||||
|
#define TFT_REALWIDTH 320
|
||||||
#endif
|
#endif
|
||||||
|
#define TFT_HEIGHT 240
|
||||||
|
#define TFT_REALHEIGHT 240
|
||||||
|
|
||||||
#define LINES_PER_BLOCK 64
|
#define LINES_PER_BLOCK 64
|
||||||
#define NR_OF_BLOCK 4
|
#define NR_OF_BLOCK 4
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,7 @@
|
||||||
#include "platform_config.h"
|
#include "platform_config.h"
|
||||||
|
|
||||||
#ifdef TEENSYBOY
|
//#define ST7789 1
|
||||||
#define ST7789 1
|
//#define ILI9341 1
|
||||||
#define ROTATE_SCREEN 1
|
|
||||||
#else
|
|
||||||
#define ILI9341 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define TFT_LINEARINT 1
|
#define TFT_LINEARINT 1
|
||||||
#define LINEARINT_HACK 1
|
#define LINEARINT_HACK 1
|
||||||
|
|
|
||||||
|
|
@ -1372,7 +1372,7 @@ void emu_init(void)
|
||||||
|
|
||||||
|
|
||||||
emu_InitJoysticks();
|
emu_InitJoysticks();
|
||||||
#ifdef TEENSYBOY
|
#ifdef SWAP_JOYSTICK
|
||||||
joySwapped = true;
|
joySwapped = true;
|
||||||
#else
|
#else
|
||||||
joySwapped = false;
|
joySwapped = false;
|
||||||
|
|
|
||||||
|
|
@ -2,31 +2,17 @@
|
||||||
#define IOPINS_H
|
#define IOPINS_H
|
||||||
|
|
||||||
#include "platform_config.h"
|
#include "platform_config.h"
|
||||||
#include "tft_t_dma_config.h"
|
|
||||||
|
|
||||||
#ifndef OLD_LAYOUT
|
#ifndef OLD_LAYOUT
|
||||||
|
|
||||||
#ifdef ST7789
|
|
||||||
// ST7789
|
|
||||||
#define TFT_SCLK 13
|
#define TFT_SCLK 13
|
||||||
#define TFT_MOSI 11
|
#define TFT_MOSI 11
|
||||||
#define TFT_MISO 12
|
#define TFT_MISO 12
|
||||||
#define TFT_TOUCH_CS 255
|
#define TFT_TOUCH_CS 255
|
||||||
#define TFT_TOUCH_INT 255
|
#define TFT_TOUCH_INT 255
|
||||||
#define TFT_DC 9
|
#define TFT_DC 9
|
||||||
#define TFT_CS 255
|
#define TFT_CS 22 // 255 for LORES ST7789 (NO CS)
|
||||||
#define TFT_RST 23
|
#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V
|
||||||
#else
|
|
||||||
// ILI9341
|
|
||||||
#define TFT_SCLK 13
|
|
||||||
#define TFT_MOSI 11
|
|
||||||
#define TFT_MISO 12
|
|
||||||
#define TFT_TOUCH_CS 255 //38
|
|
||||||
#define TFT_TOUCH_INT 255 //37
|
|
||||||
#define TFT_DC 9
|
|
||||||
#define TFT_CS 23
|
|
||||||
#define TFT_RST 255
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// PSRAM
|
// PSRAM
|
||||||
#define PSRAM_CS 36
|
#define PSRAM_CS 36
|
||||||
|
|
@ -38,10 +24,10 @@
|
||||||
#define SD_SCLK 13
|
#define SD_SCLK 13
|
||||||
#define SD_MOSI 12
|
#define SD_MOSI 12
|
||||||
#define SD_MISO 11
|
#define SD_MISO 11
|
||||||
#ifdef TEENSYBOY
|
#ifdef EXTERNAL_SD
|
||||||
#define SD_CS BUILTIN_SDCARD
|
#define SD_CS 8
|
||||||
#else
|
#else
|
||||||
#define SD_CS 5
|
#define SD_CS BUILTIN_SDCARD
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// I2C keyboard
|
// I2C keyboard
|
||||||
|
|
@ -54,17 +40,15 @@
|
||||||
#define PIN_JOY2_BTN 17
|
#define PIN_JOY2_BTN 17
|
||||||
#define PIN_KEY_USER1 3 //34
|
#define PIN_KEY_USER1 3 //34
|
||||||
#define PIN_KEY_USER2 4 //35
|
#define PIN_KEY_USER2 4 //35
|
||||||
//#define PIN_KEY_USER3 255
|
//#define PIN_KEY_USER3 33
|
||||||
//#define PIN_KEY_USER4 255
|
//#define PIN_KEY_USER4 39
|
||||||
|
|
||||||
#ifdef TEENSYBOY
|
|
||||||
// Second joystick
|
// Second joystick
|
||||||
#define PIN_JOY1_BTN 2
|
#define PIN_JOY1_BTN 2
|
||||||
#define PIN_JOY1_1 14 // UP
|
#define PIN_JOY1_1 14 // UP
|
||||||
#define PIN_JOY1_2 7 // DOWN
|
#define PIN_JOY1_2 7 // DOWN
|
||||||
#define PIN_JOY1_3 6 // RIGHT
|
#define PIN_JOY1_3 6 // RIGHT
|
||||||
#define PIN_JOY1_4 5 // LEFT
|
#define PIN_JOY1_4 5 // LEFT
|
||||||
#endif
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
// OLD LAYOUT!!!!
|
// OLD LAYOUT!!!!
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,20 @@
|
||||||
#ifndef _PLATFORM_CONFIG_H_
|
#ifndef _PLATFORM_CONFIG_H_
|
||||||
#define _PLATFORM_CONFIG_H_
|
#define _PLATFORM_CONFIG_H_
|
||||||
|
|
||||||
//#define OLD_LAYOUT 1
|
//#define OLD_LAYOUT 1
|
||||||
//#define TEENSYBOY 1
|
|
||||||
|
|
||||||
//#define HAS_PSRAM 1
|
#define ILI9341 1
|
||||||
|
//#define ST7789 1
|
||||||
|
//#define SWAP_JOYSTICK 1
|
||||||
|
//#define LOHRES 1
|
||||||
|
//#define ROTATE_SCREEN 1
|
||||||
|
#define EXTERNAL_SD 1
|
||||||
|
|
||||||
//#define USE_SDFAT 1
|
#define HAS_PSRAM 1
|
||||||
//#define SD_FAT_TYPE 1
|
|
||||||
//#define USE_SDFS 1
|
//#define USE_SDFAT 1
|
||||||
//#define SDFSDEV "1:"
|
//#define SD_FAT_TYPE 1
|
||||||
|
//#define USE_SDFS 1
|
||||||
|
//#define SDFSDEV "1:"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = {
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static void dmaInterrupt() {
|
static void dmaInterrupt() {
|
||||||
dmatx.clearInterrupt();
|
dmatx.clearInterrupt();
|
||||||
curTransfer++;
|
curTransfer++;
|
||||||
|
|
@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t
|
||||||
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
||||||
int dx=0;
|
int dx=0;
|
||||||
int dy=0;
|
int dy=0;
|
||||||
|
|
||||||
#ifdef ST7789
|
#ifdef ST7789
|
||||||
|
if (TFT_REALWIDTH == TFT_REALHEIGHT)
|
||||||
|
{
|
||||||
#ifdef ROTATE_SCREEN
|
#ifdef ROTATE_SCREEN
|
||||||
if (!flipped) {
|
if (!flipped) {
|
||||||
dy += 80;
|
dy += 80;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if (flipped) {
|
if (flipped) {
|
||||||
dx += 80;
|
dx += 80;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_CASET);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(x1+dx);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(x2+dx);
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_PASET);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(y1+dy);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(y2+dy);
|
||||||
|
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_RAMWR);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
|
||||||
|
|
@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void TFT_T_DMA::begin(void) {
|
void TFT_T_DMA::begin(void) {
|
||||||
SPI.setMOSI(_mosi);
|
SPI.setMOSI(_mosi);
|
||||||
SPI.setMISO(_miso);
|
SPI.setMISO(_miso);
|
||||||
|
|
@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) {
|
||||||
SPI.begin();
|
SPI.begin();
|
||||||
|
|
||||||
// Initialize display
|
// Initialize display
|
||||||
if (_rst < 255) { // toggle RST low to reset
|
if (_rst != 0xff) {
|
||||||
pinMode(_rst, OUTPUT);
|
pinMode(_rst, OUTPUT);
|
||||||
digitalWrite(_rst, HIGH);
|
digitalWrite(_rst, HIGH);
|
||||||
delay(5);
|
delay(100);
|
||||||
digitalWrite(_rst, LOW);
|
digitalWrite(_rst, LOW);
|
||||||
delay(20);
|
delay(100);
|
||||||
digitalWrite(_rst, HIGH);
|
digitalWrite(_rst, HIGH);
|
||||||
delay(120);
|
delay(200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
const uint8_t *addr = init_commands;
|
const uint8_t *addr = init_commands;
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
|
@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) {
|
||||||
SPI.transfer(ILI9341_DISPON);
|
SPI.transfer(ILI9341_DISPON);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef ST7789
|
#ifdef ST7789
|
||||||
uint8_t numCommands, numArgs;
|
uint8_t numCommands, numArgs;
|
||||||
|
|
@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) {
|
||||||
if(ms) {
|
if(ms) {
|
||||||
ms = *addr++; // Read post-command delay time (ms)
|
ms = *addr++; // Read post-command delay time (ms)
|
||||||
if(ms == 255) ms = 500; // If 255, delay for 500 ms
|
if(ms == 255) ms = 500; // If 255, delay for 500 ms
|
||||||
SPI.endTransaction();
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
|
SPI.endTransaction();
|
||||||
delay(ms);
|
delay(ms);
|
||||||
//beginSPITransaction();
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
|
digitalWrite(_cs, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
digitalWrite(_cs, 1);
|
||||||
#endif
|
#endif
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
|
SPI.endTransaction();
|
||||||
|
|
||||||
cancelled = false;
|
cancelled = false;
|
||||||
|
|
||||||
#ifdef FLIP_SCREEN
|
#ifdef FLIP_SCREEN
|
||||||
flipscreen(true);
|
flipscreen(true);
|
||||||
#else
|
#else
|
||||||
flipscreen(false);
|
flipscreen(false);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef ST7789
|
||||||
|
if (TFT_REALWIDTH != TFT_REALHEIGHT)
|
||||||
|
{
|
||||||
|
flipscreen(true);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) {
|
||||||
#endif
|
#endif
|
||||||
dmatx = dmasettings[0];
|
dmatx = dmasettings[0];
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1);
|
||||||
digitalWrite(_dc, 0);
|
digitalWrite(_dc, 0);
|
||||||
SPI.transfer(TFT_RAMWR);
|
SPI.transfer(TFT_RAMWR);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
|
|
@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) {
|
||||||
No DMA functions
|
No DMA functions
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
SPI.transfer(TFT_RAMWR);
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
int i,j;
|
int i,j;
|
||||||
for (j=0; j<TFT_REALHEIGHT; j++)
|
for (j=0; j<TFT_REALHEIGHT; j++)
|
||||||
{
|
{
|
||||||
for (i=0; i<TFT_REALWIDTH; i++) {
|
for (i=0; i<TFT_REALWIDTH; i++) {
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(color);
|
SPI.transfer16(color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -643,24 +677,43 @@ void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) {
|
||||||
void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
|
||||||
setArea(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(x,y,x+w-1,y+h-1);
|
||||||
|
// digitalWrite(_dc, 0);
|
||||||
|
// SPI.transfer(TFT_RAMWR);
|
||||||
|
int i;
|
||||||
|
for (i=0; i<(w*h); i++)
|
||||||
|
{
|
||||||
|
//digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(color);
|
||||||
|
}
|
||||||
|
#ifdef ILI9341
|
||||||
digitalWrite(_dc, 0);
|
digitalWrite(_dc, 0);
|
||||||
SPI.transfer(TFT_RAMWR);
|
SPI.transfer(ILI9341_SLPOUT);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
#endif
|
||||||
|
digitalWrite(_cs, 1);
|
||||||
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
||||||
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
|
||||||
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
int i,j;
|
int i,j;
|
||||||
for (j=0; j<240; j++)
|
for (j=0; j<240; j++)
|
||||||
{
|
{
|
||||||
for (i=0; i<TFT_WIDTH; i++) {
|
for (i=0; i<TFT_WIDTH; i++) {
|
||||||
digitalWrite(_dc, 1);
|
// digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(*pcolors++);
|
SPI.transfer16(*pcolors++);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -670,9 +723,8 @@ void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) {
|
void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) {
|
||||||
|
|
@ -723,12 +775,12 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setArea(arx, ary, arx+arw-1, ary+arh-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(arx, ary, arx+arw-1, ary+arh-1);
|
||||||
SPI.transfer(TFT_RAMWR);
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
|
|
||||||
bitmap = bitmap + bmp_offy*w + bmp_offx;
|
bitmap = bitmap + bmp_offy*w + bmp_offx;
|
||||||
for (int row=0;row<arh; row++)
|
for (int row=0;row<arh; row++)
|
||||||
|
|
@ -737,7 +789,7 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
for (int col=0;col<arw; col++)
|
for (int col=0;col<arw; col++)
|
||||||
{
|
{
|
||||||
uint16_t color = *bmp_ptr++;
|
uint16_t color = *bmp_ptr++;
|
||||||
digitalWrite(_dc, 1);
|
// digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(color);
|
SPI.transfer16(color);
|
||||||
}
|
}
|
||||||
bitmap += w;
|
bitmap += w;
|
||||||
|
|
@ -747,9 +799,9 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
SPI.transfer(ILI9341_SLPOUT);
|
SPI.transfer(ILI9341_SLPOUT);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) {
|
void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) {
|
||||||
|
|
@ -757,20 +809,19 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
while ((c = *text++)) {
|
while ((c = *text++)) {
|
||||||
const unsigned char * charpt=&font8x8[c][0];
|
const unsigned char * charpt=&font8x8[c][0];
|
||||||
|
|
||||||
setArea(x,y,x+7,y+(doublesize?15:7));
|
|
||||||
|
|
||||||
//SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(x,y,x+7,y+(doublesize?15:7));
|
||||||
//digitalWrite(_dc, 0);
|
//digitalWrite(_dc, 0);
|
||||||
//SPI.transfer(TFT_RAMWR);
|
//SPI.transfer(TFT_RAMWR);
|
||||||
|
//digitalWrite(_dc, 1);
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
for (int i=0;i<8;i++)
|
for (int i=0;i<8;i++)
|
||||||
{
|
{
|
||||||
unsigned char bits;
|
unsigned char bits;
|
||||||
if (doublesize) {
|
if (doublesize) {
|
||||||
bits = *charpt;
|
bits = *charpt;
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
if (bits&0x01) SPI.transfer16(fgcolor);
|
if (bits&0x01) SPI.transfer16(fgcolor);
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
bits = bits >> 1;
|
bits = bits >> 1;
|
||||||
|
|
@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
}
|
}
|
||||||
bits = *charpt++;
|
bits = *charpt++;
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
if (bits&0x01) SPI.transfer16(fgcolor);
|
if (bits&0x01) SPI.transfer16(fgcolor);
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
bits = bits >> 1;
|
bits = bits >> 1;
|
||||||
|
|
@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) {
|
|
||||||
setArea(x,y,x+w-1,y+h-1);
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
SPI.transfer(TFT_RAMWR);
|
|
||||||
int i;
|
|
||||||
for (i=0; i<(w*h); i++)
|
|
||||||
{
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
SPI.transfer16(color);
|
|
||||||
}
|
|
||||||
#ifdef ILI9341
|
|
||||||
digitalWrite(_dc, 0);
|
|
||||||
SPI.transfer(ILI9341_SLPOUT);
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
#endif
|
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************************************
|
/***********************************************************************************************
|
||||||
DMA functions
|
DMA functions
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
|
|
|
||||||
|
|
@ -21,18 +21,16 @@
|
||||||
#define B16(rgb) ((rgb<<3)&0xf8)
|
#define B16(rgb) ((rgb<<3)&0xf8)
|
||||||
|
|
||||||
|
|
||||||
#define TFT_HEIGHT 240
|
#ifdef LOHRES
|
||||||
|
|
||||||
#ifdef ILI9341
|
|
||||||
#define TFT_WIDTH 320
|
|
||||||
#define TFT_REALWIDTH 320
|
|
||||||
#define TFT_REALHEIGHT 240
|
|
||||||
#endif
|
|
||||||
#ifdef ST7789
|
|
||||||
#define TFT_WIDTH 240
|
#define TFT_WIDTH 240
|
||||||
#define TFT_REALWIDTH 240
|
#define TFT_REALWIDTH 240
|
||||||
#define TFT_REALHEIGHT 240
|
#else
|
||||||
|
#define TFT_WIDTH 320
|
||||||
|
#define TFT_REALWIDTH 320
|
||||||
#endif
|
#endif
|
||||||
|
#define TFT_HEIGHT 240
|
||||||
|
#define TFT_REALHEIGHT 240
|
||||||
|
|
||||||
|
|
||||||
#define LINES_PER_BLOCK 64
|
#define LINES_PER_BLOCK 64
|
||||||
#define NR_OF_BLOCK 4
|
#define NR_OF_BLOCK 4
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,7 @@
|
||||||
#include "platform_config.h"
|
#include "platform_config.h"
|
||||||
|
|
||||||
#ifdef TEENSYBOY
|
//#define ST7789 1
|
||||||
#define ST7789 1
|
//#define ILI9341 1
|
||||||
#define ROTATE_SCREEN 1
|
|
||||||
#else
|
|
||||||
#define ILI9341 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define TFT_LINEARINT 1
|
#define TFT_LINEARINT 1
|
||||||
#define LINEARINT_HACK 1
|
#define LINEARINT_HACK 1
|
||||||
|
|
|
||||||
|
|
@ -1373,7 +1373,7 @@ void emu_init(void)
|
||||||
|
|
||||||
|
|
||||||
emu_InitJoysticks();
|
emu_InitJoysticks();
|
||||||
#ifdef TEENSYBOY
|
#ifdef SWAP_JOYSTICK
|
||||||
joySwapped = true;
|
joySwapped = true;
|
||||||
#else
|
#else
|
||||||
joySwapped = false;
|
joySwapped = false;
|
||||||
|
|
|
||||||
|
|
@ -2,31 +2,17 @@
|
||||||
#define IOPINS_H
|
#define IOPINS_H
|
||||||
|
|
||||||
#include "platform_config.h"
|
#include "platform_config.h"
|
||||||
#include "tft_t_dma_config.h"
|
|
||||||
|
|
||||||
#ifndef OLD_LAYOUT
|
#ifndef OLD_LAYOUT
|
||||||
|
|
||||||
#ifdef ST7789
|
|
||||||
// ST7789
|
|
||||||
#define TFT_SCLK 13
|
#define TFT_SCLK 13
|
||||||
#define TFT_MOSI 11
|
#define TFT_MOSI 11
|
||||||
#define TFT_MISO 12
|
#define TFT_MISO 12
|
||||||
#define TFT_TOUCH_CS 255
|
#define TFT_TOUCH_CS 255
|
||||||
#define TFT_TOUCH_INT 255
|
#define TFT_TOUCH_INT 255
|
||||||
#define TFT_DC 9
|
#define TFT_DC 9
|
||||||
#define TFT_CS 255
|
#define TFT_CS 22 // 255 for LORES ST7789 (NO CS)
|
||||||
#define TFT_RST 23
|
#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V
|
||||||
#else
|
|
||||||
// ILI9341
|
|
||||||
#define TFT_SCLK 13
|
|
||||||
#define TFT_MOSI 11
|
|
||||||
#define TFT_MISO 12
|
|
||||||
#define TFT_TOUCH_CS 255 //38
|
|
||||||
#define TFT_TOUCH_INT 255 //37
|
|
||||||
#define TFT_DC 9
|
|
||||||
#define TFT_CS 23
|
|
||||||
#define TFT_RST 255
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// PSRAM
|
// PSRAM
|
||||||
#define PSRAM_CS 36
|
#define PSRAM_CS 36
|
||||||
|
|
@ -38,10 +24,10 @@
|
||||||
#define SD_SCLK 13
|
#define SD_SCLK 13
|
||||||
#define SD_MOSI 12
|
#define SD_MOSI 12
|
||||||
#define SD_MISO 11
|
#define SD_MISO 11
|
||||||
#ifdef TEENSYBOY
|
#ifdef EXTERNAL_SD
|
||||||
#define SD_CS BUILTIN_SDCARD
|
#define SD_CS 8
|
||||||
#else
|
#else
|
||||||
#define SD_CS 5
|
#define SD_CS BUILTIN_SDCARD
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// I2C keyboard
|
// I2C keyboard
|
||||||
|
|
@ -54,17 +40,15 @@
|
||||||
#define PIN_JOY2_BTN 17
|
#define PIN_JOY2_BTN 17
|
||||||
#define PIN_KEY_USER1 3 //34
|
#define PIN_KEY_USER1 3 //34
|
||||||
#define PIN_KEY_USER2 4 //35
|
#define PIN_KEY_USER2 4 //35
|
||||||
//#define PIN_KEY_USER3 255
|
//#define PIN_KEY_USER3 33
|
||||||
//#define PIN_KEY_USER4 255
|
//#define PIN_KEY_USER4 39
|
||||||
|
|
||||||
#ifdef TEENSYBOY
|
|
||||||
// Second joystick
|
// Second joystick
|
||||||
#define PIN_JOY1_BTN 2
|
#define PIN_JOY1_BTN 2
|
||||||
#define PIN_JOY1_1 14 // UP
|
#define PIN_JOY1_1 14 // UP
|
||||||
#define PIN_JOY1_2 7 // DOWN
|
#define PIN_JOY1_2 7 // DOWN
|
||||||
#define PIN_JOY1_3 6 // RIGHT
|
#define PIN_JOY1_3 6 // RIGHT
|
||||||
#define PIN_JOY1_4 5 // LEFT
|
#define PIN_JOY1_4 5 // LEFT
|
||||||
#endif
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
// OLD LAYOUT!!!!
|
// OLD LAYOUT!!!!
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,20 @@
|
||||||
#ifndef _PLATFORM_CONFIG_H_
|
#ifndef _PLATFORM_CONFIG_H_
|
||||||
#define _PLATFORM_CONFIG_H_
|
#define _PLATFORM_CONFIG_H_
|
||||||
|
|
||||||
//#define OLD_LAYOUT 1
|
//#define OLD_LAYOUT 1
|
||||||
//#define TEENSYBOY 1
|
|
||||||
|
|
||||||
//#define HAS_PSRAM 1
|
#define ILI9341 1
|
||||||
|
//#define ST7789 1
|
||||||
|
//#define SWAP_JOYSTICK 1
|
||||||
|
//#define LOHRES 1
|
||||||
|
//#define ROTATE_SCREEN 1
|
||||||
|
#define EXTERNAL_SD 1
|
||||||
|
|
||||||
//#define USE_SDFAT 1
|
#define HAS_PSRAM 1
|
||||||
//#define SD_FAT_TYPE 1
|
|
||||||
//#define USE_SDFS 1
|
//#define USE_SDFAT 1
|
||||||
//#define SDFSDEV "1:"
|
//#define SD_FAT_TYPE 1
|
||||||
|
//#define USE_SDFS 1
|
||||||
|
//#define SDFSDEV "1:"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = {
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static void dmaInterrupt() {
|
static void dmaInterrupt() {
|
||||||
dmatx.clearInterrupt();
|
dmatx.clearInterrupt();
|
||||||
curTransfer++;
|
curTransfer++;
|
||||||
|
|
@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t
|
||||||
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
||||||
int dx=0;
|
int dx=0;
|
||||||
int dy=0;
|
int dy=0;
|
||||||
|
|
||||||
#ifdef ST7789
|
#ifdef ST7789
|
||||||
|
if (TFT_REALWIDTH == TFT_REALHEIGHT)
|
||||||
|
{
|
||||||
#ifdef ROTATE_SCREEN
|
#ifdef ROTATE_SCREEN
|
||||||
if (!flipped) {
|
if (!flipped) {
|
||||||
dy += 80;
|
dy += 80;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if (flipped) {
|
if (flipped) {
|
||||||
dx += 80;
|
dx += 80;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_CASET);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(x1+dx);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(x2+dx);
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_PASET);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(y1+dy);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(y2+dy);
|
||||||
|
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_RAMWR);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
|
||||||
|
|
@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void TFT_T_DMA::begin(void) {
|
void TFT_T_DMA::begin(void) {
|
||||||
SPI.setMOSI(_mosi);
|
SPI.setMOSI(_mosi);
|
||||||
SPI.setMISO(_miso);
|
SPI.setMISO(_miso);
|
||||||
|
|
@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) {
|
||||||
SPI.begin();
|
SPI.begin();
|
||||||
|
|
||||||
// Initialize display
|
// Initialize display
|
||||||
if (_rst < 255) { // toggle RST low to reset
|
if (_rst != 0xff) {
|
||||||
pinMode(_rst, OUTPUT);
|
pinMode(_rst, OUTPUT);
|
||||||
digitalWrite(_rst, HIGH);
|
digitalWrite(_rst, HIGH);
|
||||||
delay(5);
|
delay(100);
|
||||||
digitalWrite(_rst, LOW);
|
digitalWrite(_rst, LOW);
|
||||||
delay(20);
|
delay(100);
|
||||||
digitalWrite(_rst, HIGH);
|
digitalWrite(_rst, HIGH);
|
||||||
delay(120);
|
delay(200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
const uint8_t *addr = init_commands;
|
const uint8_t *addr = init_commands;
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
|
@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) {
|
||||||
SPI.transfer(ILI9341_DISPON);
|
SPI.transfer(ILI9341_DISPON);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef ST7789
|
#ifdef ST7789
|
||||||
uint8_t numCommands, numArgs;
|
uint8_t numCommands, numArgs;
|
||||||
|
|
@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) {
|
||||||
if(ms) {
|
if(ms) {
|
||||||
ms = *addr++; // Read post-command delay time (ms)
|
ms = *addr++; // Read post-command delay time (ms)
|
||||||
if(ms == 255) ms = 500; // If 255, delay for 500 ms
|
if(ms == 255) ms = 500; // If 255, delay for 500 ms
|
||||||
SPI.endTransaction();
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
|
SPI.endTransaction();
|
||||||
delay(ms);
|
delay(ms);
|
||||||
//beginSPITransaction();
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
|
digitalWrite(_cs, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
digitalWrite(_cs, 1);
|
||||||
#endif
|
#endif
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
|
SPI.endTransaction();
|
||||||
|
|
||||||
cancelled = false;
|
cancelled = false;
|
||||||
|
|
||||||
#ifdef FLIP_SCREEN
|
#ifdef FLIP_SCREEN
|
||||||
flipscreen(true);
|
flipscreen(true);
|
||||||
#else
|
#else
|
||||||
flipscreen(false);
|
flipscreen(false);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef ST7789
|
||||||
|
if (TFT_REALWIDTH != TFT_REALHEIGHT)
|
||||||
|
{
|
||||||
|
flipscreen(true);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) {
|
||||||
#endif
|
#endif
|
||||||
dmatx = dmasettings[0];
|
dmatx = dmasettings[0];
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1);
|
||||||
digitalWrite(_dc, 0);
|
digitalWrite(_dc, 0);
|
||||||
SPI.transfer(TFT_RAMWR);
|
SPI.transfer(TFT_RAMWR);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
|
|
@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) {
|
||||||
No DMA functions
|
No DMA functions
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
SPI.transfer(TFT_RAMWR);
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
int i,j;
|
int i,j;
|
||||||
for (j=0; j<TFT_REALHEIGHT; j++)
|
for (j=0; j<TFT_REALHEIGHT; j++)
|
||||||
{
|
{
|
||||||
for (i=0; i<TFT_REALWIDTH; i++) {
|
for (i=0; i<TFT_REALWIDTH; i++) {
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(color);
|
SPI.transfer16(color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -643,24 +677,43 @@ void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) {
|
||||||
void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
|
||||||
setArea(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(x,y,x+w-1,y+h-1);
|
||||||
|
// digitalWrite(_dc, 0);
|
||||||
|
// SPI.transfer(TFT_RAMWR);
|
||||||
|
int i;
|
||||||
|
for (i=0; i<(w*h); i++)
|
||||||
|
{
|
||||||
|
//digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(color);
|
||||||
|
}
|
||||||
|
#ifdef ILI9341
|
||||||
digitalWrite(_dc, 0);
|
digitalWrite(_dc, 0);
|
||||||
SPI.transfer(TFT_RAMWR);
|
SPI.transfer(ILI9341_SLPOUT);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
#endif
|
||||||
|
digitalWrite(_cs, 1);
|
||||||
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
||||||
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
|
||||||
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
int i,j;
|
int i,j;
|
||||||
for (j=0; j<240; j++)
|
for (j=0; j<240; j++)
|
||||||
{
|
{
|
||||||
for (i=0; i<TFT_WIDTH; i++) {
|
for (i=0; i<TFT_WIDTH; i++) {
|
||||||
digitalWrite(_dc, 1);
|
// digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(*pcolors++);
|
SPI.transfer16(*pcolors++);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -670,9 +723,8 @@ void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) {
|
void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) {
|
||||||
|
|
@ -723,12 +775,12 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setArea(arx, ary, arx+arw-1, ary+arh-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(arx, ary, arx+arw-1, ary+arh-1);
|
||||||
SPI.transfer(TFT_RAMWR);
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
|
|
||||||
bitmap = bitmap + bmp_offy*w + bmp_offx;
|
bitmap = bitmap + bmp_offy*w + bmp_offx;
|
||||||
for (int row=0;row<arh; row++)
|
for (int row=0;row<arh; row++)
|
||||||
|
|
@ -737,7 +789,7 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
for (int col=0;col<arw; col++)
|
for (int col=0;col<arw; col++)
|
||||||
{
|
{
|
||||||
uint16_t color = *bmp_ptr++;
|
uint16_t color = *bmp_ptr++;
|
||||||
digitalWrite(_dc, 1);
|
// digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(color);
|
SPI.transfer16(color);
|
||||||
}
|
}
|
||||||
bitmap += w;
|
bitmap += w;
|
||||||
|
|
@ -747,9 +799,9 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
SPI.transfer(ILI9341_SLPOUT);
|
SPI.transfer(ILI9341_SLPOUT);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) {
|
void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) {
|
||||||
|
|
@ -757,20 +809,19 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
while ((c = *text++)) {
|
while ((c = *text++)) {
|
||||||
const unsigned char * charpt=&font8x8[c][0];
|
const unsigned char * charpt=&font8x8[c][0];
|
||||||
|
|
||||||
setArea(x,y,x+7,y+(doublesize?15:7));
|
|
||||||
|
|
||||||
//SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(x,y,x+7,y+(doublesize?15:7));
|
||||||
//digitalWrite(_dc, 0);
|
//digitalWrite(_dc, 0);
|
||||||
//SPI.transfer(TFT_RAMWR);
|
//SPI.transfer(TFT_RAMWR);
|
||||||
|
//digitalWrite(_dc, 1);
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
for (int i=0;i<8;i++)
|
for (int i=0;i<8;i++)
|
||||||
{
|
{
|
||||||
unsigned char bits;
|
unsigned char bits;
|
||||||
if (doublesize) {
|
if (doublesize) {
|
||||||
bits = *charpt;
|
bits = *charpt;
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
if (bits&0x01) SPI.transfer16(fgcolor);
|
if (bits&0x01) SPI.transfer16(fgcolor);
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
bits = bits >> 1;
|
bits = bits >> 1;
|
||||||
|
|
@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
}
|
}
|
||||||
bits = *charpt++;
|
bits = *charpt++;
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
if (bits&0x01) SPI.transfer16(fgcolor);
|
if (bits&0x01) SPI.transfer16(fgcolor);
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
bits = bits >> 1;
|
bits = bits >> 1;
|
||||||
|
|
@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) {
|
|
||||||
setArea(x,y,x+w-1,y+h-1);
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
SPI.transfer(TFT_RAMWR);
|
|
||||||
int i;
|
|
||||||
for (i=0; i<(w*h); i++)
|
|
||||||
{
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
SPI.transfer16(color);
|
|
||||||
}
|
|
||||||
#ifdef ILI9341
|
|
||||||
digitalWrite(_dc, 0);
|
|
||||||
SPI.transfer(ILI9341_SLPOUT);
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
#endif
|
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************************************
|
/***********************************************************************************************
|
||||||
DMA functions
|
DMA functions
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
|
|
|
||||||
|
|
@ -21,18 +21,15 @@
|
||||||
#define B16(rgb) ((rgb<<3)&0xf8)
|
#define B16(rgb) ((rgb<<3)&0xf8)
|
||||||
|
|
||||||
|
|
||||||
#define TFT_HEIGHT 240
|
#ifdef LOHRES
|
||||||
|
|
||||||
#ifdef ILI9341
|
|
||||||
#define TFT_WIDTH 320
|
|
||||||
#define TFT_REALWIDTH 320
|
|
||||||
#define TFT_REALHEIGHT 240
|
|
||||||
#endif
|
|
||||||
#ifdef ST7789
|
|
||||||
#define TFT_WIDTH 240
|
#define TFT_WIDTH 240
|
||||||
#define TFT_REALWIDTH 240
|
#define TFT_REALWIDTH 240
|
||||||
#define TFT_REALHEIGHT 240
|
#else
|
||||||
|
#define TFT_WIDTH 320
|
||||||
|
#define TFT_REALWIDTH 320
|
||||||
#endif
|
#endif
|
||||||
|
#define TFT_HEIGHT 240
|
||||||
|
#define TFT_REALHEIGHT 240
|
||||||
|
|
||||||
#define LINES_PER_BLOCK 64
|
#define LINES_PER_BLOCK 64
|
||||||
#define NR_OF_BLOCK 4
|
#define NR_OF_BLOCK 4
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,7 @@
|
||||||
#include "platform_config.h"
|
#include "platform_config.h"
|
||||||
|
|
||||||
#ifdef TEENSYBOY
|
//#define ST7789 1
|
||||||
#define ST7789 1
|
//#define ILI9341 1
|
||||||
#define ROTATE_SCREEN 1
|
|
||||||
#else
|
|
||||||
#define ILI9341 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define TFT_LINEARINT 1
|
#define TFT_LINEARINT 1
|
||||||
#define LINEARINT_HACK 1
|
#define LINEARINT_HACK 1
|
||||||
|
|
|
||||||
|
|
@ -1373,7 +1373,7 @@ void emu_init(void)
|
||||||
|
|
||||||
|
|
||||||
emu_InitJoysticks();
|
emu_InitJoysticks();
|
||||||
#ifdef TEENSYBOY
|
#ifdef SWAP_JOYSTICK
|
||||||
joySwapped = true;
|
joySwapped = true;
|
||||||
#else
|
#else
|
||||||
joySwapped = false;
|
joySwapped = false;
|
||||||
|
|
|
||||||
|
|
@ -2,31 +2,17 @@
|
||||||
#define IOPINS_H
|
#define IOPINS_H
|
||||||
|
|
||||||
#include "platform_config.h"
|
#include "platform_config.h"
|
||||||
#include "tft_t_dma_config.h"
|
|
||||||
|
|
||||||
#ifndef OLD_LAYOUT
|
#ifndef OLD_LAYOUT
|
||||||
|
|
||||||
#ifdef ST7789
|
|
||||||
// ST7789
|
|
||||||
#define TFT_SCLK 13
|
#define TFT_SCLK 13
|
||||||
#define TFT_MOSI 11
|
#define TFT_MOSI 11
|
||||||
#define TFT_MISO 12
|
#define TFT_MISO 12
|
||||||
#define TFT_TOUCH_CS 255
|
#define TFT_TOUCH_CS 255
|
||||||
#define TFT_TOUCH_INT 255
|
#define TFT_TOUCH_INT 255
|
||||||
#define TFT_DC 9
|
#define TFT_DC 9
|
||||||
#define TFT_CS 255
|
#define TFT_CS 22 // 255 for LORES ST7789 (NO CS)
|
||||||
#define TFT_RST 23
|
#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V
|
||||||
#else
|
|
||||||
// ILI9341
|
|
||||||
#define TFT_SCLK 13
|
|
||||||
#define TFT_MOSI 11
|
|
||||||
#define TFT_MISO 12
|
|
||||||
#define TFT_TOUCH_CS 255 //38
|
|
||||||
#define TFT_TOUCH_INT 255 //37
|
|
||||||
#define TFT_DC 9
|
|
||||||
#define TFT_CS 23
|
|
||||||
#define TFT_RST 255
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// PSRAM
|
// PSRAM
|
||||||
#define PSRAM_CS 36
|
#define PSRAM_CS 36
|
||||||
|
|
@ -38,10 +24,10 @@
|
||||||
#define SD_SCLK 13
|
#define SD_SCLK 13
|
||||||
#define SD_MOSI 12
|
#define SD_MOSI 12
|
||||||
#define SD_MISO 11
|
#define SD_MISO 11
|
||||||
#ifdef TEENSYBOY
|
#ifdef EXTERNAL_SD
|
||||||
#define SD_CS BUILTIN_SDCARD
|
#define SD_CS 8
|
||||||
#else
|
#else
|
||||||
#define SD_CS 5
|
#define SD_CS BUILTIN_SDCARD
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// I2C keyboard
|
// I2C keyboard
|
||||||
|
|
@ -54,17 +40,15 @@
|
||||||
#define PIN_JOY2_BTN 17
|
#define PIN_JOY2_BTN 17
|
||||||
#define PIN_KEY_USER1 3 //34
|
#define PIN_KEY_USER1 3 //34
|
||||||
#define PIN_KEY_USER2 4 //35
|
#define PIN_KEY_USER2 4 //35
|
||||||
//#define PIN_KEY_USER3 255
|
//#define PIN_KEY_USER3 33
|
||||||
//#define PIN_KEY_USER4 255
|
//#define PIN_KEY_USER4 39
|
||||||
|
|
||||||
#ifdef TEENSYBOY
|
|
||||||
// Second joystick
|
// Second joystick
|
||||||
#define PIN_JOY1_BTN 2
|
#define PIN_JOY1_BTN 2
|
||||||
#define PIN_JOY1_1 14 // UP
|
#define PIN_JOY1_1 14 // UP
|
||||||
#define PIN_JOY1_2 7 // DOWN
|
#define PIN_JOY1_2 7 // DOWN
|
||||||
#define PIN_JOY1_3 6 // RIGHT
|
#define PIN_JOY1_3 6 // RIGHT
|
||||||
#define PIN_JOY1_4 5 // LEFT
|
#define PIN_JOY1_4 5 // LEFT
|
||||||
#endif
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
// OLD LAYOUT!!!!
|
// OLD LAYOUT!!!!
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,20 @@
|
||||||
#ifndef _PLATFORM_CONFIG_H_
|
#ifndef _PLATFORM_CONFIG_H_
|
||||||
#define _PLATFORM_CONFIG_H_
|
#define _PLATFORM_CONFIG_H_
|
||||||
|
|
||||||
//#define OLD_LAYOUT 1
|
//#define OLD_LAYOUT 1
|
||||||
//#define TEENSYBOY 1
|
|
||||||
|
|
||||||
//#define HAS_PSRAM 1
|
#define ILI9341 1
|
||||||
|
//#define ST7789 1
|
||||||
|
//#define SWAP_JOYSTICK 1
|
||||||
|
//#define LOHRES 1
|
||||||
|
//#define ROTATE_SCREEN 1
|
||||||
|
#define EXTERNAL_SD 1
|
||||||
|
|
||||||
//#define USE_SDFAT 1
|
#define HAS_PSRAM 1
|
||||||
//#define SD_FAT_TYPE 1
|
|
||||||
//#define USE_SDFS 1
|
//#define USE_SDFAT 1
|
||||||
//#define SDFSDEV "1:"
|
//#define SD_FAT_TYPE 1
|
||||||
|
//#define USE_SDFS 1
|
||||||
|
//#define SDFSDEV "1:"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = {
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static void dmaInterrupt() {
|
static void dmaInterrupt() {
|
||||||
dmatx.clearInterrupt();
|
dmatx.clearInterrupt();
|
||||||
curTransfer++;
|
curTransfer++;
|
||||||
|
|
@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t
|
||||||
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
||||||
int dx=0;
|
int dx=0;
|
||||||
int dy=0;
|
int dy=0;
|
||||||
|
|
||||||
#ifdef ST7789
|
#ifdef ST7789
|
||||||
|
if (TFT_REALWIDTH == TFT_REALHEIGHT)
|
||||||
|
{
|
||||||
#ifdef ROTATE_SCREEN
|
#ifdef ROTATE_SCREEN
|
||||||
if (!flipped) {
|
if (!flipped) {
|
||||||
dy += 80;
|
dy += 80;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if (flipped) {
|
if (flipped) {
|
||||||
dx += 80;
|
dx += 80;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_CASET);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(x1+dx);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(x2+dx);
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_PASET);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(y1+dy);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(y2+dy);
|
||||||
|
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_RAMWR);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
|
||||||
|
|
@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void TFT_T_DMA::begin(void) {
|
void TFT_T_DMA::begin(void) {
|
||||||
SPI.setMOSI(_mosi);
|
SPI.setMOSI(_mosi);
|
||||||
SPI.setMISO(_miso);
|
SPI.setMISO(_miso);
|
||||||
|
|
@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) {
|
||||||
SPI.begin();
|
SPI.begin();
|
||||||
|
|
||||||
// Initialize display
|
// Initialize display
|
||||||
if (_rst < 255) { // toggle RST low to reset
|
if (_rst != 0xff) {
|
||||||
pinMode(_rst, OUTPUT);
|
pinMode(_rst, OUTPUT);
|
||||||
digitalWrite(_rst, HIGH);
|
digitalWrite(_rst, HIGH);
|
||||||
delay(5);
|
delay(100);
|
||||||
digitalWrite(_rst, LOW);
|
digitalWrite(_rst, LOW);
|
||||||
delay(20);
|
delay(100);
|
||||||
digitalWrite(_rst, HIGH);
|
digitalWrite(_rst, HIGH);
|
||||||
delay(120);
|
delay(200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
const uint8_t *addr = init_commands;
|
const uint8_t *addr = init_commands;
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
|
@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) {
|
||||||
SPI.transfer(ILI9341_DISPON);
|
SPI.transfer(ILI9341_DISPON);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef ST7789
|
#ifdef ST7789
|
||||||
uint8_t numCommands, numArgs;
|
uint8_t numCommands, numArgs;
|
||||||
|
|
@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) {
|
||||||
if(ms) {
|
if(ms) {
|
||||||
ms = *addr++; // Read post-command delay time (ms)
|
ms = *addr++; // Read post-command delay time (ms)
|
||||||
if(ms == 255) ms = 500; // If 255, delay for 500 ms
|
if(ms == 255) ms = 500; // If 255, delay for 500 ms
|
||||||
SPI.endTransaction();
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
|
SPI.endTransaction();
|
||||||
delay(ms);
|
delay(ms);
|
||||||
//beginSPITransaction();
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
|
digitalWrite(_cs, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
digitalWrite(_cs, 1);
|
||||||
#endif
|
#endif
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
|
SPI.endTransaction();
|
||||||
|
|
||||||
cancelled = false;
|
cancelled = false;
|
||||||
|
|
||||||
#ifdef FLIP_SCREEN
|
#ifdef FLIP_SCREEN
|
||||||
flipscreen(true);
|
flipscreen(true);
|
||||||
#else
|
#else
|
||||||
flipscreen(false);
|
flipscreen(false);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef ST7789
|
||||||
|
if (TFT_REALWIDTH != TFT_REALHEIGHT)
|
||||||
|
{
|
||||||
|
flipscreen(true);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) {
|
||||||
#endif
|
#endif
|
||||||
dmatx = dmasettings[0];
|
dmatx = dmasettings[0];
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1);
|
||||||
digitalWrite(_dc, 0);
|
digitalWrite(_dc, 0);
|
||||||
SPI.transfer(TFT_RAMWR);
|
SPI.transfer(TFT_RAMWR);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
|
|
@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) {
|
||||||
No DMA functions
|
No DMA functions
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
SPI.transfer(TFT_RAMWR);
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
int i,j;
|
int i,j;
|
||||||
for (j=0; j<TFT_REALHEIGHT; j++)
|
for (j=0; j<TFT_REALHEIGHT; j++)
|
||||||
{
|
{
|
||||||
for (i=0; i<TFT_REALWIDTH; i++) {
|
for (i=0; i<TFT_REALWIDTH; i++) {
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(color);
|
SPI.transfer16(color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -643,24 +677,43 @@ void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) {
|
||||||
void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
|
||||||
setArea(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(x,y,x+w-1,y+h-1);
|
||||||
|
// digitalWrite(_dc, 0);
|
||||||
|
// SPI.transfer(TFT_RAMWR);
|
||||||
|
int i;
|
||||||
|
for (i=0; i<(w*h); i++)
|
||||||
|
{
|
||||||
|
//digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(color);
|
||||||
|
}
|
||||||
|
#ifdef ILI9341
|
||||||
digitalWrite(_dc, 0);
|
digitalWrite(_dc, 0);
|
||||||
SPI.transfer(TFT_RAMWR);
|
SPI.transfer(ILI9341_SLPOUT);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
#endif
|
||||||
|
digitalWrite(_cs, 1);
|
||||||
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
||||||
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
|
||||||
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
int i,j;
|
int i,j;
|
||||||
for (j=0; j<240; j++)
|
for (j=0; j<240; j++)
|
||||||
{
|
{
|
||||||
for (i=0; i<TFT_WIDTH; i++) {
|
for (i=0; i<TFT_WIDTH; i++) {
|
||||||
digitalWrite(_dc, 1);
|
// digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(*pcolors++);
|
SPI.transfer16(*pcolors++);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -670,9 +723,8 @@ void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) {
|
void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) {
|
||||||
|
|
@ -723,12 +775,12 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setArea(arx, ary, arx+arw-1, ary+arh-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(arx, ary, arx+arw-1, ary+arh-1);
|
||||||
SPI.transfer(TFT_RAMWR);
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
|
|
||||||
bitmap = bitmap + bmp_offy*w + bmp_offx;
|
bitmap = bitmap + bmp_offy*w + bmp_offx;
|
||||||
for (int row=0;row<arh; row++)
|
for (int row=0;row<arh; row++)
|
||||||
|
|
@ -737,7 +789,7 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
for (int col=0;col<arw; col++)
|
for (int col=0;col<arw; col++)
|
||||||
{
|
{
|
||||||
uint16_t color = *bmp_ptr++;
|
uint16_t color = *bmp_ptr++;
|
||||||
digitalWrite(_dc, 1);
|
// digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(color);
|
SPI.transfer16(color);
|
||||||
}
|
}
|
||||||
bitmap += w;
|
bitmap += w;
|
||||||
|
|
@ -747,9 +799,9 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
SPI.transfer(ILI9341_SLPOUT);
|
SPI.transfer(ILI9341_SLPOUT);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) {
|
void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) {
|
||||||
|
|
@ -757,20 +809,19 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
while ((c = *text++)) {
|
while ((c = *text++)) {
|
||||||
const unsigned char * charpt=&font8x8[c][0];
|
const unsigned char * charpt=&font8x8[c][0];
|
||||||
|
|
||||||
setArea(x,y,x+7,y+(doublesize?15:7));
|
|
||||||
|
|
||||||
//SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(x,y,x+7,y+(doublesize?15:7));
|
||||||
//digitalWrite(_dc, 0);
|
//digitalWrite(_dc, 0);
|
||||||
//SPI.transfer(TFT_RAMWR);
|
//SPI.transfer(TFT_RAMWR);
|
||||||
|
//digitalWrite(_dc, 1);
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
for (int i=0;i<8;i++)
|
for (int i=0;i<8;i++)
|
||||||
{
|
{
|
||||||
unsigned char bits;
|
unsigned char bits;
|
||||||
if (doublesize) {
|
if (doublesize) {
|
||||||
bits = *charpt;
|
bits = *charpt;
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
if (bits&0x01) SPI.transfer16(fgcolor);
|
if (bits&0x01) SPI.transfer16(fgcolor);
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
bits = bits >> 1;
|
bits = bits >> 1;
|
||||||
|
|
@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
}
|
}
|
||||||
bits = *charpt++;
|
bits = *charpt++;
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
if (bits&0x01) SPI.transfer16(fgcolor);
|
if (bits&0x01) SPI.transfer16(fgcolor);
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
bits = bits >> 1;
|
bits = bits >> 1;
|
||||||
|
|
@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) {
|
|
||||||
setArea(x,y,x+w-1,y+h-1);
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
SPI.transfer(TFT_RAMWR);
|
|
||||||
int i;
|
|
||||||
for (i=0; i<(w*h); i++)
|
|
||||||
{
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
SPI.transfer16(color);
|
|
||||||
}
|
|
||||||
#ifdef ILI9341
|
|
||||||
digitalWrite(_dc, 0);
|
|
||||||
SPI.transfer(ILI9341_SLPOUT);
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
#endif
|
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************************************
|
/***********************************************************************************************
|
||||||
DMA functions
|
DMA functions
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
|
|
|
||||||
|
|
@ -21,18 +21,15 @@
|
||||||
#define B16(rgb) ((rgb<<3)&0xf8)
|
#define B16(rgb) ((rgb<<3)&0xf8)
|
||||||
|
|
||||||
|
|
||||||
#define TFT_HEIGHT 200
|
#ifdef LOHRES
|
||||||
|
|
||||||
#ifdef ILI9341
|
|
||||||
#define TFT_WIDTH 320
|
|
||||||
#define TFT_REALWIDTH 320
|
|
||||||
#define TFT_REALHEIGHT 240
|
|
||||||
#endif
|
|
||||||
#ifdef ST7789
|
|
||||||
#define TFT_WIDTH 240
|
#define TFT_WIDTH 240
|
||||||
#define TFT_REALWIDTH 240
|
#define TFT_REALWIDTH 240
|
||||||
#define TFT_REALHEIGHT 240
|
#else
|
||||||
|
#define TFT_WIDTH 320
|
||||||
|
#define TFT_REALWIDTH 320
|
||||||
#endif
|
#endif
|
||||||
|
#define TFT_HEIGHT 200
|
||||||
|
#define TFT_REALHEIGHT 240
|
||||||
|
|
||||||
#define LINES_PER_BLOCK 64
|
#define LINES_PER_BLOCK 64
|
||||||
#define NR_OF_BLOCK 4
|
#define NR_OF_BLOCK 4
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,7 @@
|
||||||
#include "platform_config.h"
|
#include "platform_config.h"
|
||||||
|
|
||||||
#ifdef TEENSYBOY
|
//#define ST7789 1
|
||||||
#define ST7789 1
|
//#define ILI9341 1
|
||||||
#define ROTATE_SCREEN 1
|
|
||||||
#else
|
|
||||||
#define ILI9341 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define TFT_LINEARINT 1
|
#define TFT_LINEARINT 1
|
||||||
#define LINEARINT_HACK 1
|
#define LINEARINT_HACK 1
|
||||||
|
|
|
||||||
|
|
@ -1380,7 +1380,7 @@ void emu_init(void)
|
||||||
|
|
||||||
|
|
||||||
emu_InitJoysticks();
|
emu_InitJoysticks();
|
||||||
#ifdef TEENSYBOY
|
#ifdef SWAP_JOYSTICK
|
||||||
joySwapped = true;
|
joySwapped = true;
|
||||||
#else
|
#else
|
||||||
joySwapped = false;
|
joySwapped = false;
|
||||||
|
|
|
||||||
|
|
@ -2,31 +2,17 @@
|
||||||
#define IOPINS_H
|
#define IOPINS_H
|
||||||
|
|
||||||
#include "platform_config.h"
|
#include "platform_config.h"
|
||||||
#include "tft_t_dma_config.h"
|
|
||||||
|
|
||||||
#ifndef OLD_LAYOUT
|
#ifndef OLD_LAYOUT
|
||||||
|
|
||||||
#ifdef ST7789
|
|
||||||
// ST7789
|
|
||||||
#define TFT_SCLK 13
|
#define TFT_SCLK 13
|
||||||
#define TFT_MOSI 11
|
#define TFT_MOSI 11
|
||||||
#define TFT_MISO 12
|
#define TFT_MISO 12
|
||||||
#define TFT_TOUCH_CS 255
|
#define TFT_TOUCH_CS 255
|
||||||
#define TFT_TOUCH_INT 255
|
#define TFT_TOUCH_INT 255
|
||||||
#define TFT_DC 9
|
#define TFT_DC 9
|
||||||
#define TFT_CS 255
|
#define TFT_CS 22 // 255 for LORES ST7789 (NO CS)
|
||||||
#define TFT_RST 23
|
#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V
|
||||||
#else
|
|
||||||
// ILI9341
|
|
||||||
#define TFT_SCLK 13
|
|
||||||
#define TFT_MOSI 11
|
|
||||||
#define TFT_MISO 12
|
|
||||||
#define TFT_TOUCH_CS 255 //38
|
|
||||||
#define TFT_TOUCH_INT 255 //37
|
|
||||||
#define TFT_DC 9
|
|
||||||
#define TFT_CS 23
|
|
||||||
#define TFT_RST 255
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// PSRAM
|
// PSRAM
|
||||||
#define PSRAM_CS 36
|
#define PSRAM_CS 36
|
||||||
|
|
@ -38,10 +24,10 @@
|
||||||
#define SD_SCLK 13
|
#define SD_SCLK 13
|
||||||
#define SD_MOSI 12
|
#define SD_MOSI 12
|
||||||
#define SD_MISO 11
|
#define SD_MISO 11
|
||||||
#ifdef TEENSYBOY
|
#ifdef EXTERNAL_SD
|
||||||
#define SD_CS BUILTIN_SDCARD
|
#define SD_CS 8
|
||||||
#else
|
#else
|
||||||
#define SD_CS 5
|
#define SD_CS BUILTIN_SDCARD
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// I2C keyboard
|
// I2C keyboard
|
||||||
|
|
@ -54,17 +40,15 @@
|
||||||
#define PIN_JOY2_BTN 17
|
#define PIN_JOY2_BTN 17
|
||||||
#define PIN_KEY_USER1 3 //34
|
#define PIN_KEY_USER1 3 //34
|
||||||
#define PIN_KEY_USER2 4 //35
|
#define PIN_KEY_USER2 4 //35
|
||||||
//#define PIN_KEY_USER3 255
|
//#define PIN_KEY_USER3 33
|
||||||
//#define PIN_KEY_USER4 255
|
//#define PIN_KEY_USER4 39
|
||||||
|
|
||||||
#ifdef TEENSYBOY
|
|
||||||
// Second joystick
|
// Second joystick
|
||||||
#define PIN_JOY1_BTN 2
|
#define PIN_JOY1_BTN 2
|
||||||
#define PIN_JOY1_1 14 // UP
|
#define PIN_JOY1_1 14 // UP
|
||||||
#define PIN_JOY1_2 7 // DOWN
|
#define PIN_JOY1_2 7 // DOWN
|
||||||
#define PIN_JOY1_3 6 // RIGHT
|
#define PIN_JOY1_3 6 // RIGHT
|
||||||
#define PIN_JOY1_4 5 // LEFT
|
#define PIN_JOY1_4 5 // LEFT
|
||||||
#endif
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
// OLD LAYOUT!!!!
|
// OLD LAYOUT!!!!
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,20 @@
|
||||||
#ifndef _PLATFORM_CONFIG_H_
|
#ifndef _PLATFORM_CONFIG_H_
|
||||||
#define _PLATFORM_CONFIG_H_
|
#define _PLATFORM_CONFIG_H_
|
||||||
|
|
||||||
//#define OLD_LAYOUT 1
|
//#define OLD_LAYOUT 1
|
||||||
//#define TEENSYBOY 1
|
|
||||||
|
|
||||||
//#define HAS_PSRAM 1
|
#define ILI9341 1
|
||||||
|
//#define ST7789 1
|
||||||
|
//#define SWAP_JOYSTICK 1
|
||||||
|
//#define LOHRES 1
|
||||||
|
//#define ROTATE_SCREEN 1
|
||||||
|
#define EXTERNAL_SD 1
|
||||||
|
|
||||||
//#define USE_SDFAT 1
|
#define HAS_PSRAM 1
|
||||||
//#define SD_FAT_TYPE 1
|
|
||||||
//#define USE_SDFS 1
|
//#define USE_SDFAT 1
|
||||||
//#define SDFSDEV "1:"
|
//#define SD_FAT_TYPE 1
|
||||||
|
//#define USE_SDFS 1
|
||||||
|
//#define SDFSDEV "1:"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = {
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static void dmaInterrupt() {
|
static void dmaInterrupt() {
|
||||||
dmatx.clearInterrupt();
|
dmatx.clearInterrupt();
|
||||||
curTransfer++;
|
curTransfer++;
|
||||||
|
|
@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t
|
||||||
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
||||||
int dx=0;
|
int dx=0;
|
||||||
int dy=0;
|
int dy=0;
|
||||||
|
|
||||||
#ifdef ST7789
|
#ifdef ST7789
|
||||||
|
if (TFT_REALWIDTH == TFT_REALHEIGHT)
|
||||||
|
{
|
||||||
#ifdef ROTATE_SCREEN
|
#ifdef ROTATE_SCREEN
|
||||||
if (!flipped) {
|
if (!flipped) {
|
||||||
dy += 80;
|
dy += 80;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if (flipped) {
|
if (flipped) {
|
||||||
dx += 80;
|
dx += 80;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_CASET);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(x1+dx);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(x2+dx);
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_PASET);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(y1+dy);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(y2+dy);
|
||||||
|
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_RAMWR);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
|
||||||
|
|
@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void TFT_T_DMA::begin(void) {
|
void TFT_T_DMA::begin(void) {
|
||||||
SPI.setMOSI(_mosi);
|
SPI.setMOSI(_mosi);
|
||||||
SPI.setMISO(_miso);
|
SPI.setMISO(_miso);
|
||||||
|
|
@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) {
|
||||||
SPI.begin();
|
SPI.begin();
|
||||||
|
|
||||||
// Initialize display
|
// Initialize display
|
||||||
if (_rst < 255) { // toggle RST low to reset
|
if (_rst != 0xff) {
|
||||||
pinMode(_rst, OUTPUT);
|
pinMode(_rst, OUTPUT);
|
||||||
digitalWrite(_rst, HIGH);
|
digitalWrite(_rst, HIGH);
|
||||||
delay(5);
|
delay(100);
|
||||||
digitalWrite(_rst, LOW);
|
digitalWrite(_rst, LOW);
|
||||||
delay(20);
|
delay(100);
|
||||||
digitalWrite(_rst, HIGH);
|
digitalWrite(_rst, HIGH);
|
||||||
delay(120);
|
delay(200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
const uint8_t *addr = init_commands;
|
const uint8_t *addr = init_commands;
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
|
@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) {
|
||||||
SPI.transfer(ILI9341_DISPON);
|
SPI.transfer(ILI9341_DISPON);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef ST7789
|
#ifdef ST7789
|
||||||
uint8_t numCommands, numArgs;
|
uint8_t numCommands, numArgs;
|
||||||
|
|
@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) {
|
||||||
if(ms) {
|
if(ms) {
|
||||||
ms = *addr++; // Read post-command delay time (ms)
|
ms = *addr++; // Read post-command delay time (ms)
|
||||||
if(ms == 255) ms = 500; // If 255, delay for 500 ms
|
if(ms == 255) ms = 500; // If 255, delay for 500 ms
|
||||||
SPI.endTransaction();
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
|
SPI.endTransaction();
|
||||||
delay(ms);
|
delay(ms);
|
||||||
//beginSPITransaction();
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
|
digitalWrite(_cs, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
digitalWrite(_cs, 1);
|
||||||
#endif
|
#endif
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
|
SPI.endTransaction();
|
||||||
|
|
||||||
cancelled = false;
|
cancelled = false;
|
||||||
|
|
||||||
#ifdef FLIP_SCREEN
|
#ifdef FLIP_SCREEN
|
||||||
flipscreen(true);
|
flipscreen(true);
|
||||||
#else
|
#else
|
||||||
flipscreen(false);
|
flipscreen(false);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef ST7789
|
||||||
|
if (TFT_REALWIDTH != TFT_REALHEIGHT)
|
||||||
|
{
|
||||||
|
flipscreen(true);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -410,7 +443,7 @@ void TFT_T_DMA::startDMA(void) {
|
||||||
digitalWrite(_cs, HIGH);
|
digitalWrite(_cs, HIGH);
|
||||||
SPI.begin();
|
SPI.begin();
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE0));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE0));
|
||||||
#if defined(__IMXRT1052__) || defined(__IMXRT1062__)
|
#if defined(__IMXRT1052__) || defined(__IMXRT1062__)
|
||||||
|
|
||||||
#ifdef TFT_DEBUG
|
#ifdef TFT_DEBUG
|
||||||
PRREG(LPSPI4_CCR);
|
PRREG(LPSPI4_CCR);
|
||||||
|
|
@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) {
|
||||||
#endif
|
#endif
|
||||||
dmatx = dmasettings[0];
|
dmatx = dmasettings[0];
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1);
|
||||||
digitalWrite(_dc, 0);
|
digitalWrite(_dc, 0);
|
||||||
SPI.transfer(TFT_RAMWR);
|
SPI.transfer(TFT_RAMWR);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
|
|
@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) {
|
||||||
No DMA functions
|
No DMA functions
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
SPI.transfer(TFT_RAMWR);
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
int i,j;
|
int i,j;
|
||||||
for (j=0; j<TFT_REALHEIGHT; j++)
|
for (j=0; j<TFT_REALHEIGHT; j++)
|
||||||
{
|
{
|
||||||
for (i=0; i<TFT_REALWIDTH; i++) {
|
for (i=0; i<TFT_REALWIDTH; i++) {
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(color);
|
SPI.transfer16(color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -643,24 +677,43 @@ void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) {
|
||||||
void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
|
||||||
setArea(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(x,y,x+w-1,y+h-1);
|
||||||
|
// digitalWrite(_dc, 0);
|
||||||
|
// SPI.transfer(TFT_RAMWR);
|
||||||
|
int i;
|
||||||
|
for (i=0; i<(w*h); i++)
|
||||||
|
{
|
||||||
|
//digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(color);
|
||||||
|
}
|
||||||
|
#ifdef ILI9341
|
||||||
digitalWrite(_dc, 0);
|
digitalWrite(_dc, 0);
|
||||||
SPI.transfer(TFT_RAMWR);
|
SPI.transfer(ILI9341_SLPOUT);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
#endif
|
||||||
|
digitalWrite(_cs, 1);
|
||||||
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
||||||
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
|
||||||
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
int i,j;
|
int i,j;
|
||||||
for (j=0; j<240; j++)
|
for (j=0; j<240; j++)
|
||||||
{
|
{
|
||||||
for (i=0; i<TFT_WIDTH; i++) {
|
for (i=0; i<TFT_WIDTH; i++) {
|
||||||
digitalWrite(_dc, 1);
|
// digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(*pcolors++);
|
SPI.transfer16(*pcolors++);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -670,9 +723,8 @@ void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) {
|
void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) {
|
||||||
|
|
@ -723,12 +775,12 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setArea(arx, ary, arx+arw-1, ary+arh-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(arx, ary, arx+arw-1, ary+arh-1);
|
||||||
SPI.transfer(TFT_RAMWR);
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
|
|
||||||
bitmap = bitmap + bmp_offy*w + bmp_offx;
|
bitmap = bitmap + bmp_offy*w + bmp_offx;
|
||||||
for (int row=0;row<arh; row++)
|
for (int row=0;row<arh; row++)
|
||||||
|
|
@ -737,7 +789,7 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
for (int col=0;col<arw; col++)
|
for (int col=0;col<arw; col++)
|
||||||
{
|
{
|
||||||
uint16_t color = *bmp_ptr++;
|
uint16_t color = *bmp_ptr++;
|
||||||
digitalWrite(_dc, 1);
|
// digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(color);
|
SPI.transfer16(color);
|
||||||
}
|
}
|
||||||
bitmap += w;
|
bitmap += w;
|
||||||
|
|
@ -747,9 +799,9 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
SPI.transfer(ILI9341_SLPOUT);
|
SPI.transfer(ILI9341_SLPOUT);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) {
|
void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) {
|
||||||
|
|
@ -757,20 +809,19 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
while ((c = *text++)) {
|
while ((c = *text++)) {
|
||||||
const unsigned char * charpt=&font8x8[c][0];
|
const unsigned char * charpt=&font8x8[c][0];
|
||||||
|
|
||||||
setArea(x,y,x+7,y+(doublesize?15:7));
|
|
||||||
|
|
||||||
//SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(x,y,x+7,y+(doublesize?15:7));
|
||||||
//digitalWrite(_dc, 0);
|
//digitalWrite(_dc, 0);
|
||||||
//SPI.transfer(TFT_RAMWR);
|
//SPI.transfer(TFT_RAMWR);
|
||||||
|
//digitalWrite(_dc, 1);
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
for (int i=0;i<8;i++)
|
for (int i=0;i<8;i++)
|
||||||
{
|
{
|
||||||
unsigned char bits;
|
unsigned char bits;
|
||||||
if (doublesize) {
|
if (doublesize) {
|
||||||
bits = *charpt;
|
bits = *charpt;
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
if (bits&0x01) SPI.transfer16(fgcolor);
|
if (bits&0x01) SPI.transfer16(fgcolor);
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
bits = bits >> 1;
|
bits = bits >> 1;
|
||||||
|
|
@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
}
|
}
|
||||||
bits = *charpt++;
|
bits = *charpt++;
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
if (bits&0x01) SPI.transfer16(fgcolor);
|
if (bits&0x01) SPI.transfer16(fgcolor);
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
bits = bits >> 1;
|
bits = bits >> 1;
|
||||||
|
|
@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) {
|
|
||||||
setArea(x,y,x+w-1,y+h-1);
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
SPI.transfer(TFT_RAMWR);
|
|
||||||
int i;
|
|
||||||
for (i=0; i<(w*h); i++)
|
|
||||||
{
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
SPI.transfer16(color);
|
|
||||||
}
|
|
||||||
#ifdef ILI9341
|
|
||||||
digitalWrite(_dc, 0);
|
|
||||||
SPI.transfer(ILI9341_SLPOUT);
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
#endif
|
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************************************
|
/***********************************************************************************************
|
||||||
DMA functions
|
DMA functions
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
|
|
|
||||||
|
|
@ -21,18 +21,15 @@
|
||||||
#define B16(rgb) ((rgb<<3)&0xf8)
|
#define B16(rgb) ((rgb<<3)&0xf8)
|
||||||
|
|
||||||
|
|
||||||
#define TFT_HEIGHT 192
|
#ifdef LOHRES
|
||||||
|
|
||||||
#ifdef ILI9341
|
|
||||||
#define TFT_WIDTH 320
|
|
||||||
#define TFT_REALWIDTH 320
|
|
||||||
#define TFT_REALHEIGHT 240
|
|
||||||
#endif
|
|
||||||
#ifdef ST7789
|
|
||||||
#define TFT_WIDTH 240
|
#define TFT_WIDTH 240
|
||||||
#define TFT_REALWIDTH 240
|
#define TFT_REALWIDTH 240
|
||||||
#define TFT_REALHEIGHT 240
|
#else
|
||||||
|
#define TFT_WIDTH 320
|
||||||
|
#define TFT_REALWIDTH 320
|
||||||
#endif
|
#endif
|
||||||
|
#define TFT_HEIGHT 192
|
||||||
|
#define TFT_REALHEIGHT 240
|
||||||
|
|
||||||
#define LINES_PER_BLOCK 64
|
#define LINES_PER_BLOCK 64
|
||||||
#define NR_OF_BLOCK 4
|
#define NR_OF_BLOCK 4
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,7 @@
|
||||||
#include "platform_config.h"
|
#include "platform_config.h"
|
||||||
|
|
||||||
#ifdef TEENSYBOY
|
//#define ST7789 1
|
||||||
#define ST7789 1
|
//#define ILI9341 1
|
||||||
#define ROTATE_SCREEN 1
|
|
||||||
#else
|
|
||||||
#define ILI9341 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define TFT_LINEARINT 1
|
#define TFT_LINEARINT 1
|
||||||
#define LINEARINT_HACK 1
|
#define LINEARINT_HACK 1
|
||||||
|
|
|
||||||
|
|
@ -1410,7 +1410,7 @@ void emu_init(void)
|
||||||
|
|
||||||
|
|
||||||
emu_InitJoysticks();
|
emu_InitJoysticks();
|
||||||
#ifdef TEENSYBOY
|
#ifdef SWAP_JOYSTICK
|
||||||
joySwapped = true;
|
joySwapped = true;
|
||||||
#else
|
#else
|
||||||
joySwapped = false;
|
joySwapped = false;
|
||||||
|
|
|
||||||
|
|
@ -2,31 +2,17 @@
|
||||||
#define IOPINS_H
|
#define IOPINS_H
|
||||||
|
|
||||||
#include "platform_config.h"
|
#include "platform_config.h"
|
||||||
#include "tft_t_dma_config.h"
|
|
||||||
|
|
||||||
#ifndef OLD_LAYOUT
|
#ifndef OLD_LAYOUT
|
||||||
|
|
||||||
#ifdef ST7789
|
|
||||||
// ST7789
|
|
||||||
#define TFT_SCLK 13
|
#define TFT_SCLK 13
|
||||||
#define TFT_MOSI 11
|
#define TFT_MOSI 11
|
||||||
#define TFT_MISO 12
|
#define TFT_MISO 12
|
||||||
#define TFT_TOUCH_CS 255
|
#define TFT_TOUCH_CS 255
|
||||||
#define TFT_TOUCH_INT 255
|
#define TFT_TOUCH_INT 255
|
||||||
#define TFT_DC 9
|
#define TFT_DC 9
|
||||||
#define TFT_CS 255
|
#define TFT_CS 22 // 255 for LORES ST7789 (NO CS)
|
||||||
#define TFT_RST 23
|
#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V
|
||||||
#else
|
|
||||||
// ILI9341
|
|
||||||
#define TFT_SCLK 13
|
|
||||||
#define TFT_MOSI 11
|
|
||||||
#define TFT_MISO 12
|
|
||||||
#define TFT_TOUCH_CS 255 //38
|
|
||||||
#define TFT_TOUCH_INT 255 //37
|
|
||||||
#define TFT_DC 9
|
|
||||||
#define TFT_CS 23
|
|
||||||
#define TFT_RST 255
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// PSRAM
|
// PSRAM
|
||||||
#define PSRAM_CS 36
|
#define PSRAM_CS 36
|
||||||
|
|
@ -38,10 +24,10 @@
|
||||||
#define SD_SCLK 13
|
#define SD_SCLK 13
|
||||||
#define SD_MOSI 12
|
#define SD_MOSI 12
|
||||||
#define SD_MISO 11
|
#define SD_MISO 11
|
||||||
#ifdef TEENSYBOY
|
#ifdef EXTERNAL_SD
|
||||||
#define SD_CS BUILTIN_SDCARD
|
#define SD_CS 8
|
||||||
#else
|
#else
|
||||||
#define SD_CS 5
|
#define SD_CS BUILTIN_SDCARD
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// I2C keyboard
|
// I2C keyboard
|
||||||
|
|
@ -54,17 +40,15 @@
|
||||||
#define PIN_JOY2_BTN 17
|
#define PIN_JOY2_BTN 17
|
||||||
#define PIN_KEY_USER1 3 //34
|
#define PIN_KEY_USER1 3 //34
|
||||||
#define PIN_KEY_USER2 4 //35
|
#define PIN_KEY_USER2 4 //35
|
||||||
//#define PIN_KEY_USER3 255
|
//#define PIN_KEY_USER3 33
|
||||||
//#define PIN_KEY_USER4 255
|
//#define PIN_KEY_USER4 39
|
||||||
|
|
||||||
#ifdef TEENSYBOY
|
|
||||||
// Second joystick
|
// Second joystick
|
||||||
#define PIN_JOY1_BTN 2
|
#define PIN_JOY1_BTN 2
|
||||||
#define PIN_JOY1_1 14 // UP
|
#define PIN_JOY1_1 14 // UP
|
||||||
#define PIN_JOY1_2 7 // DOWN
|
#define PIN_JOY1_2 7 // DOWN
|
||||||
#define PIN_JOY1_3 6 // RIGHT
|
#define PIN_JOY1_3 6 // RIGHT
|
||||||
#define PIN_JOY1_4 5 // LEFT
|
#define PIN_JOY1_4 5 // LEFT
|
||||||
#endif
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
// OLD LAYOUT!!!!
|
// OLD LAYOUT!!!!
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,20 @@
|
||||||
#ifndef _PLATFORM_CONFIG_H_
|
#ifndef _PLATFORM_CONFIG_H_
|
||||||
#define _PLATFORM_CONFIG_H_
|
#define _PLATFORM_CONFIG_H_
|
||||||
|
|
||||||
//#define OLD_LAYOUT 1
|
//#define OLD_LAYOUT 1
|
||||||
//#define TEENSYBOY 1
|
|
||||||
|
|
||||||
#define HAS_PSRAM 1
|
#define ILI9341 1
|
||||||
|
//#define ST7789 1
|
||||||
|
//#define SWAP_JOYSTICK 1
|
||||||
|
//#define LOHRES 1
|
||||||
|
//#define ROTATE_SCREEN 1
|
||||||
|
#define EXTERNAL_SD 1
|
||||||
|
|
||||||
//#define USE_SDFAT 1
|
#define HAS_PSRAM 1
|
||||||
//#define SD_FAT_TYPE 1
|
|
||||||
//#define USE_SDFS 1
|
//#define USE_SDFAT 1
|
||||||
//#define SDFSDEV "1:"
|
//#define SD_FAT_TYPE 1
|
||||||
|
//#define USE_SDFS 1
|
||||||
|
//#define SDFSDEV "1:"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ enum
|
||||||
FREQ_44Khz
|
FREQ_44Khz
|
||||||
};
|
};
|
||||||
|
|
||||||
#define MIXBUFFER_SIZE 8192
|
#define MIXBUFFER_SIZE 1024 //8192
|
||||||
#define SCREEN_START_CYCLE 96 /* Cycle first normal pixel appears on */
|
#define SCREEN_START_CYCLE 96 /* Cycle first normal pixel appears on */
|
||||||
#define SCANLINES_PER_FRAME 313 /* Number of scan lines per frame */
|
#define SCANLINES_PER_FRAME 313 /* Number of scan lines per frame */
|
||||||
#define CYCLES_PER_LINE 512 /* Cycles per horiztonal line scan */
|
#define CYCLES_PER_LINE 512 /* Cycles per horiztonal line scan */
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = {
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static void dmaInterrupt() {
|
static void dmaInterrupt() {
|
||||||
dmatx.clearInterrupt();
|
dmatx.clearInterrupt();
|
||||||
curTransfer++;
|
curTransfer++;
|
||||||
|
|
@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t
|
||||||
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
||||||
int dx=0;
|
int dx=0;
|
||||||
int dy=0;
|
int dy=0;
|
||||||
|
|
||||||
#ifdef ST7789
|
#ifdef ST7789
|
||||||
|
if (TFT_REALWIDTH == TFT_REALHEIGHT)
|
||||||
|
{
|
||||||
#ifdef ROTATE_SCREEN
|
#ifdef ROTATE_SCREEN
|
||||||
if (!flipped) {
|
if (!flipped) {
|
||||||
dy += 80;
|
dy += 80;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if (flipped) {
|
if (flipped) {
|
||||||
dx += 80;
|
dx += 80;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_CASET);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(x1+dx);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(x2+dx);
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_PASET);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(y1+dy);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(y2+dy);
|
||||||
|
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_RAMWR);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
|
||||||
|
|
@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void TFT_T_DMA::begin(void) {
|
void TFT_T_DMA::begin(void) {
|
||||||
SPI.setMOSI(_mosi);
|
SPI.setMOSI(_mosi);
|
||||||
SPI.setMISO(_miso);
|
SPI.setMISO(_miso);
|
||||||
|
|
@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) {
|
||||||
SPI.begin();
|
SPI.begin();
|
||||||
|
|
||||||
// Initialize display
|
// Initialize display
|
||||||
if (_rst < 255) { // toggle RST low to reset
|
if (_rst != 0xff) {
|
||||||
pinMode(_rst, OUTPUT);
|
pinMode(_rst, OUTPUT);
|
||||||
digitalWrite(_rst, HIGH);
|
digitalWrite(_rst, HIGH);
|
||||||
delay(5);
|
delay(100);
|
||||||
digitalWrite(_rst, LOW);
|
digitalWrite(_rst, LOW);
|
||||||
delay(20);
|
delay(100);
|
||||||
digitalWrite(_rst, HIGH);
|
digitalWrite(_rst, HIGH);
|
||||||
delay(120);
|
delay(200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
const uint8_t *addr = init_commands;
|
const uint8_t *addr = init_commands;
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
|
@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) {
|
||||||
SPI.transfer(ILI9341_DISPON);
|
SPI.transfer(ILI9341_DISPON);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef ST7789
|
#ifdef ST7789
|
||||||
uint8_t numCommands, numArgs;
|
uint8_t numCommands, numArgs;
|
||||||
|
|
@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) {
|
||||||
if(ms) {
|
if(ms) {
|
||||||
ms = *addr++; // Read post-command delay time (ms)
|
ms = *addr++; // Read post-command delay time (ms)
|
||||||
if(ms == 255) ms = 500; // If 255, delay for 500 ms
|
if(ms == 255) ms = 500; // If 255, delay for 500 ms
|
||||||
SPI.endTransaction();
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
|
SPI.endTransaction();
|
||||||
delay(ms);
|
delay(ms);
|
||||||
//beginSPITransaction();
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
|
digitalWrite(_cs, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
digitalWrite(_cs, 1);
|
||||||
#endif
|
#endif
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
|
SPI.endTransaction();
|
||||||
|
|
||||||
cancelled = false;
|
cancelled = false;
|
||||||
|
|
||||||
#ifdef FLIP_SCREEN
|
#ifdef FLIP_SCREEN
|
||||||
flipscreen(true);
|
flipscreen(true);
|
||||||
#else
|
#else
|
||||||
flipscreen(false);
|
flipscreen(false);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef ST7789
|
||||||
|
if (TFT_REALWIDTH != TFT_REALHEIGHT)
|
||||||
|
{
|
||||||
|
flipscreen(true);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) {
|
||||||
#endif
|
#endif
|
||||||
dmatx = dmasettings[0];
|
dmatx = dmasettings[0];
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1);
|
||||||
digitalWrite(_dc, 0);
|
digitalWrite(_dc, 0);
|
||||||
SPI.transfer(TFT_RAMWR);
|
SPI.transfer(TFT_RAMWR);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
|
|
@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) {
|
||||||
No DMA functions
|
No DMA functions
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
SPI.transfer(TFT_RAMWR);
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
int i,j;
|
int i,j;
|
||||||
for (j=0; j<TFT_REALHEIGHT; j++)
|
for (j=0; j<TFT_REALHEIGHT; j++)
|
||||||
{
|
{
|
||||||
for (i=0; i<TFT_REALWIDTH; i++) {
|
for (i=0; i<TFT_REALWIDTH; i++) {
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(color);
|
SPI.transfer16(color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -643,24 +677,43 @@ void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) {
|
||||||
void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
|
||||||
setArea(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(x,y,x+w-1,y+h-1);
|
||||||
|
// digitalWrite(_dc, 0);
|
||||||
|
// SPI.transfer(TFT_RAMWR);
|
||||||
|
int i;
|
||||||
|
for (i=0; i<(w*h); i++)
|
||||||
|
{
|
||||||
|
//digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(color);
|
||||||
|
}
|
||||||
|
#ifdef ILI9341
|
||||||
digitalWrite(_dc, 0);
|
digitalWrite(_dc, 0);
|
||||||
SPI.transfer(TFT_RAMWR);
|
SPI.transfer(ILI9341_SLPOUT);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
#endif
|
||||||
|
digitalWrite(_cs, 1);
|
||||||
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
||||||
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
|
||||||
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
int i,j;
|
int i,j;
|
||||||
for (j=0; j<240; j++)
|
for (j=0; j<240; j++)
|
||||||
{
|
{
|
||||||
for (i=0; i<TFT_WIDTH; i++) {
|
for (i=0; i<TFT_WIDTH; i++) {
|
||||||
digitalWrite(_dc, 1);
|
// digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(*pcolors++);
|
SPI.transfer16(*pcolors++);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -670,9 +723,8 @@ void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) {
|
void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) {
|
||||||
|
|
@ -723,12 +775,12 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setArea(arx, ary, arx+arw-1, ary+arh-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(arx, ary, arx+arw-1, ary+arh-1);
|
||||||
SPI.transfer(TFT_RAMWR);
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
|
|
||||||
bitmap = bitmap + bmp_offy*w + bmp_offx;
|
bitmap = bitmap + bmp_offy*w + bmp_offx;
|
||||||
for (int row=0;row<arh; row++)
|
for (int row=0;row<arh; row++)
|
||||||
|
|
@ -737,7 +789,7 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
for (int col=0;col<arw; col++)
|
for (int col=0;col<arw; col++)
|
||||||
{
|
{
|
||||||
uint16_t color = *bmp_ptr++;
|
uint16_t color = *bmp_ptr++;
|
||||||
digitalWrite(_dc, 1);
|
// digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(color);
|
SPI.transfer16(color);
|
||||||
}
|
}
|
||||||
bitmap += w;
|
bitmap += w;
|
||||||
|
|
@ -747,9 +799,9 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
SPI.transfer(ILI9341_SLPOUT);
|
SPI.transfer(ILI9341_SLPOUT);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) {
|
void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) {
|
||||||
|
|
@ -757,20 +809,19 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
while ((c = *text++)) {
|
while ((c = *text++)) {
|
||||||
const unsigned char * charpt=&font8x8[c][0];
|
const unsigned char * charpt=&font8x8[c][0];
|
||||||
|
|
||||||
setArea(x,y,x+7,y+(doublesize?15:7));
|
|
||||||
|
|
||||||
//SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(x,y,x+7,y+(doublesize?15:7));
|
||||||
//digitalWrite(_dc, 0);
|
//digitalWrite(_dc, 0);
|
||||||
//SPI.transfer(TFT_RAMWR);
|
//SPI.transfer(TFT_RAMWR);
|
||||||
|
//digitalWrite(_dc, 1);
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
for (int i=0;i<8;i++)
|
for (int i=0;i<8;i++)
|
||||||
{
|
{
|
||||||
unsigned char bits;
|
unsigned char bits;
|
||||||
if (doublesize) {
|
if (doublesize) {
|
||||||
bits = *charpt;
|
bits = *charpt;
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
if (bits&0x01) SPI.transfer16(fgcolor);
|
if (bits&0x01) SPI.transfer16(fgcolor);
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
bits = bits >> 1;
|
bits = bits >> 1;
|
||||||
|
|
@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
}
|
}
|
||||||
bits = *charpt++;
|
bits = *charpt++;
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
if (bits&0x01) SPI.transfer16(fgcolor);
|
if (bits&0x01) SPI.transfer16(fgcolor);
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
bits = bits >> 1;
|
bits = bits >> 1;
|
||||||
|
|
@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) {
|
|
||||||
setArea(x,y,x+w-1,y+h-1);
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
SPI.transfer(TFT_RAMWR);
|
|
||||||
int i;
|
|
||||||
for (i=0; i<(w*h); i++)
|
|
||||||
{
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
SPI.transfer16(color);
|
|
||||||
}
|
|
||||||
#ifdef ILI9341
|
|
||||||
digitalWrite(_dc, 0);
|
|
||||||
SPI.transfer(ILI9341_SLPOUT);
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
#endif
|
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************************************
|
/***********************************************************************************************
|
||||||
DMA functions
|
DMA functions
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
|
|
|
||||||
|
|
@ -21,18 +21,16 @@
|
||||||
#define B16(rgb) ((rgb<<3)&0xf8)
|
#define B16(rgb) ((rgb<<3)&0xf8)
|
||||||
|
|
||||||
|
|
||||||
#define TFT_HEIGHT 200
|
#ifdef LOHRES
|
||||||
|
|
||||||
#ifdef ILI9341
|
|
||||||
#define TFT_WIDTH 320
|
|
||||||
#define TFT_REALWIDTH 320
|
|
||||||
#define TFT_REALHEIGHT 240
|
|
||||||
#endif
|
|
||||||
#ifdef ST7789
|
|
||||||
#define TFT_WIDTH 240
|
#define TFT_WIDTH 240
|
||||||
#define TFT_REALWIDTH 240
|
#define TFT_REALWIDTH 240
|
||||||
#define TFT_REALHEIGHT 240
|
#else
|
||||||
|
#define TFT_WIDTH 320
|
||||||
|
#define TFT_REALWIDTH 320
|
||||||
#endif
|
#endif
|
||||||
|
#define TFT_HEIGHT 200
|
||||||
|
#define TFT_REALHEIGHT 240
|
||||||
|
|
||||||
|
|
||||||
#define LINES_PER_BLOCK 64
|
#define LINES_PER_BLOCK 64
|
||||||
#define NR_OF_BLOCK 4
|
#define NR_OF_BLOCK 4
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,7 @@
|
||||||
#include "platform_config.h"
|
#include "platform_config.h"
|
||||||
|
|
||||||
#ifdef TEENSYBOY
|
//#define ST7789 1
|
||||||
#define ST7789 1
|
//#define ILI9341 1
|
||||||
#define ROTATE_SCREEN 1
|
|
||||||
#else
|
|
||||||
#define ILI9341 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define TFT_LINEARINT 1
|
#define TFT_LINEARINT 1
|
||||||
#define LINEARINT_HACK 1
|
#define LINEARINT_HACK 1
|
||||||
|
|
|
||||||
|
|
@ -1373,7 +1373,7 @@ void emu_init(void)
|
||||||
|
|
||||||
|
|
||||||
emu_InitJoysticks();
|
emu_InitJoysticks();
|
||||||
#ifdef TEENSYBOY
|
#ifdef SWAP_JOYSTICK
|
||||||
joySwapped = true;
|
joySwapped = true;
|
||||||
#else
|
#else
|
||||||
joySwapped = false;
|
joySwapped = false;
|
||||||
|
|
|
||||||
|
|
@ -2,31 +2,17 @@
|
||||||
#define IOPINS_H
|
#define IOPINS_H
|
||||||
|
|
||||||
#include "platform_config.h"
|
#include "platform_config.h"
|
||||||
#include "tft_t_dma_config.h"
|
|
||||||
|
|
||||||
#ifndef OLD_LAYOUT
|
#ifndef OLD_LAYOUT
|
||||||
|
|
||||||
#ifdef ST7789
|
|
||||||
// ST7789
|
|
||||||
#define TFT_SCLK 13
|
#define TFT_SCLK 13
|
||||||
#define TFT_MOSI 11
|
#define TFT_MOSI 11
|
||||||
#define TFT_MISO 12
|
#define TFT_MISO 12
|
||||||
#define TFT_TOUCH_CS 255
|
#define TFT_TOUCH_CS 255
|
||||||
#define TFT_TOUCH_INT 255
|
#define TFT_TOUCH_INT 255
|
||||||
#define TFT_DC 9
|
#define TFT_DC 9
|
||||||
#define TFT_CS 255
|
#define TFT_CS 22 // 255 for LORES ST7789 (NO CS)
|
||||||
#define TFT_RST 23
|
#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V
|
||||||
#else
|
|
||||||
// ILI9341
|
|
||||||
#define TFT_SCLK 13
|
|
||||||
#define TFT_MOSI 11
|
|
||||||
#define TFT_MISO 12
|
|
||||||
#define TFT_TOUCH_CS 255 //38
|
|
||||||
#define TFT_TOUCH_INT 255 //37
|
|
||||||
#define TFT_DC 9
|
|
||||||
#define TFT_CS 23
|
|
||||||
#define TFT_RST 255
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// PSRAM
|
// PSRAM
|
||||||
#define PSRAM_CS 36
|
#define PSRAM_CS 36
|
||||||
|
|
@ -38,10 +24,10 @@
|
||||||
#define SD_SCLK 13
|
#define SD_SCLK 13
|
||||||
#define SD_MOSI 12
|
#define SD_MOSI 12
|
||||||
#define SD_MISO 11
|
#define SD_MISO 11
|
||||||
#ifdef TEENSYBOY
|
#ifdef EXTERNAL_SD
|
||||||
#define SD_CS BUILTIN_SDCARD
|
#define SD_CS 8
|
||||||
#else
|
#else
|
||||||
#define SD_CS 5
|
#define SD_CS BUILTIN_SDCARD
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// I2C keyboard
|
// I2C keyboard
|
||||||
|
|
@ -54,17 +40,15 @@
|
||||||
#define PIN_JOY2_BTN 17
|
#define PIN_JOY2_BTN 17
|
||||||
#define PIN_KEY_USER1 3 //34
|
#define PIN_KEY_USER1 3 //34
|
||||||
#define PIN_KEY_USER2 4 //35
|
#define PIN_KEY_USER2 4 //35
|
||||||
//#define PIN_KEY_USER3 255
|
//#define PIN_KEY_USER3 33
|
||||||
//#define PIN_KEY_USER4 255
|
//#define PIN_KEY_USER4 39
|
||||||
|
|
||||||
#ifdef TEENSYBOY
|
|
||||||
// Second joystick
|
// Second joystick
|
||||||
#define PIN_JOY1_BTN 2
|
#define PIN_JOY1_BTN 2
|
||||||
#define PIN_JOY1_1 14 // UP
|
#define PIN_JOY1_1 14 // UP
|
||||||
#define PIN_JOY1_2 7 // DOWN
|
#define PIN_JOY1_2 7 // DOWN
|
||||||
#define PIN_JOY1_3 6 // RIGHT
|
#define PIN_JOY1_3 6 // RIGHT
|
||||||
#define PIN_JOY1_4 5 // LEFT
|
#define PIN_JOY1_4 5 // LEFT
|
||||||
#endif
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
// OLD LAYOUT!!!!
|
// OLD LAYOUT!!!!
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,20 @@
|
||||||
#ifndef _PLATFORM_CONFIG_H_
|
#ifndef _PLATFORM_CONFIG_H_
|
||||||
#define _PLATFORM_CONFIG_H_
|
#define _PLATFORM_CONFIG_H_
|
||||||
|
|
||||||
//#define OLD_LAYOUT 1
|
//#define OLD_LAYOUT 1
|
||||||
//#define TEENSYBOY 1
|
|
||||||
|
|
||||||
//#define HAS_PSRAM 1
|
#define ILI9341 1
|
||||||
|
//#define ST7789 1
|
||||||
|
//#define SWAP_JOYSTICK 1
|
||||||
|
//#define LOHRES 1
|
||||||
|
//#define ROTATE_SCREEN 1
|
||||||
|
#define EXTERNAL_SD 1
|
||||||
|
|
||||||
//#define USE_SDFAT 1
|
#define HAS_PSRAM 1
|
||||||
//#define SD_FAT_TYPE 1
|
|
||||||
//#define USE_SDFS 1
|
//#define USE_SDFAT 1
|
||||||
//#define SDFSDEV "1:"
|
//#define SD_FAT_TYPE 1
|
||||||
|
//#define USE_SDFS 1
|
||||||
|
//#define SDFSDEV "1:"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = {
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static void dmaInterrupt() {
|
static void dmaInterrupt() {
|
||||||
dmatx.clearInterrupt();
|
dmatx.clearInterrupt();
|
||||||
curTransfer++;
|
curTransfer++;
|
||||||
|
|
@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t
|
||||||
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
||||||
int dx=0;
|
int dx=0;
|
||||||
int dy=0;
|
int dy=0;
|
||||||
|
|
||||||
#ifdef ST7789
|
#ifdef ST7789
|
||||||
|
if (TFT_REALWIDTH == TFT_REALHEIGHT)
|
||||||
|
{
|
||||||
#ifdef ROTATE_SCREEN
|
#ifdef ROTATE_SCREEN
|
||||||
if (!flipped) {
|
if (!flipped) {
|
||||||
dy += 80;
|
dy += 80;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if (flipped) {
|
if (flipped) {
|
||||||
dx += 80;
|
dx += 80;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_CASET);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(x1+dx);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(x2+dx);
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_PASET);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(y1+dy);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(y2+dy);
|
||||||
|
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_RAMWR);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
|
||||||
|
|
@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void TFT_T_DMA::begin(void) {
|
void TFT_T_DMA::begin(void) {
|
||||||
SPI.setMOSI(_mosi);
|
SPI.setMOSI(_mosi);
|
||||||
SPI.setMISO(_miso);
|
SPI.setMISO(_miso);
|
||||||
|
|
@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) {
|
||||||
SPI.begin();
|
SPI.begin();
|
||||||
|
|
||||||
// Initialize display
|
// Initialize display
|
||||||
if (_rst < 255) { // toggle RST low to reset
|
if (_rst != 0xff) {
|
||||||
pinMode(_rst, OUTPUT);
|
pinMode(_rst, OUTPUT);
|
||||||
digitalWrite(_rst, HIGH);
|
digitalWrite(_rst, HIGH);
|
||||||
delay(5);
|
delay(100);
|
||||||
digitalWrite(_rst, LOW);
|
digitalWrite(_rst, LOW);
|
||||||
delay(20);
|
delay(100);
|
||||||
digitalWrite(_rst, HIGH);
|
digitalWrite(_rst, HIGH);
|
||||||
delay(120);
|
delay(200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
const uint8_t *addr = init_commands;
|
const uint8_t *addr = init_commands;
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
|
@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) {
|
||||||
SPI.transfer(ILI9341_DISPON);
|
SPI.transfer(ILI9341_DISPON);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef ST7789
|
#ifdef ST7789
|
||||||
uint8_t numCommands, numArgs;
|
uint8_t numCommands, numArgs;
|
||||||
|
|
@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) {
|
||||||
if(ms) {
|
if(ms) {
|
||||||
ms = *addr++; // Read post-command delay time (ms)
|
ms = *addr++; // Read post-command delay time (ms)
|
||||||
if(ms == 255) ms = 500; // If 255, delay for 500 ms
|
if(ms == 255) ms = 500; // If 255, delay for 500 ms
|
||||||
SPI.endTransaction();
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
|
SPI.endTransaction();
|
||||||
delay(ms);
|
delay(ms);
|
||||||
//beginSPITransaction();
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
|
digitalWrite(_cs, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
digitalWrite(_cs, 1);
|
||||||
#endif
|
#endif
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
|
SPI.endTransaction();
|
||||||
|
|
||||||
cancelled = false;
|
cancelled = false;
|
||||||
|
|
||||||
#ifdef FLIP_SCREEN
|
#ifdef FLIP_SCREEN
|
||||||
flipscreen(true);
|
flipscreen(true);
|
||||||
#else
|
#else
|
||||||
flipscreen(false);
|
flipscreen(false);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef ST7789
|
||||||
|
if (TFT_REALWIDTH != TFT_REALHEIGHT)
|
||||||
|
{
|
||||||
|
flipscreen(true);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) {
|
||||||
#endif
|
#endif
|
||||||
dmatx = dmasettings[0];
|
dmatx = dmasettings[0];
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1);
|
||||||
digitalWrite(_dc, 0);
|
digitalWrite(_dc, 0);
|
||||||
SPI.transfer(TFT_RAMWR);
|
SPI.transfer(TFT_RAMWR);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
|
|
@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) {
|
||||||
No DMA functions
|
No DMA functions
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
SPI.transfer(TFT_RAMWR);
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
int i,j;
|
int i,j;
|
||||||
for (j=0; j<TFT_REALHEIGHT; j++)
|
for (j=0; j<TFT_REALHEIGHT; j++)
|
||||||
{
|
{
|
||||||
for (i=0; i<TFT_REALWIDTH; i++) {
|
for (i=0; i<TFT_REALWIDTH; i++) {
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(color);
|
SPI.transfer16(color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -643,24 +677,43 @@ void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) {
|
||||||
void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
|
||||||
setArea(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(x,y,x+w-1,y+h-1);
|
||||||
|
// digitalWrite(_dc, 0);
|
||||||
|
// SPI.transfer(TFT_RAMWR);
|
||||||
|
int i;
|
||||||
|
for (i=0; i<(w*h); i++)
|
||||||
|
{
|
||||||
|
//digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(color);
|
||||||
|
}
|
||||||
|
#ifdef ILI9341
|
||||||
digitalWrite(_dc, 0);
|
digitalWrite(_dc, 0);
|
||||||
SPI.transfer(TFT_RAMWR);
|
SPI.transfer(ILI9341_SLPOUT);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
#endif
|
||||||
|
digitalWrite(_cs, 1);
|
||||||
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
||||||
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
|
||||||
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
int i,j;
|
int i,j;
|
||||||
for (j=0; j<240; j++)
|
for (j=0; j<240; j++)
|
||||||
{
|
{
|
||||||
for (i=0; i<TFT_WIDTH; i++) {
|
for (i=0; i<TFT_WIDTH; i++) {
|
||||||
digitalWrite(_dc, 1);
|
// digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(*pcolors++);
|
SPI.transfer16(*pcolors++);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -670,9 +723,8 @@ void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) {
|
void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) {
|
||||||
|
|
@ -723,12 +775,12 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setArea(arx, ary, arx+arw-1, ary+arh-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(arx, ary, arx+arw-1, ary+arh-1);
|
||||||
SPI.transfer(TFT_RAMWR);
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
|
|
||||||
bitmap = bitmap + bmp_offy*w + bmp_offx;
|
bitmap = bitmap + bmp_offy*w + bmp_offx;
|
||||||
for (int row=0;row<arh; row++)
|
for (int row=0;row<arh; row++)
|
||||||
|
|
@ -737,7 +789,7 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
for (int col=0;col<arw; col++)
|
for (int col=0;col<arw; col++)
|
||||||
{
|
{
|
||||||
uint16_t color = *bmp_ptr++;
|
uint16_t color = *bmp_ptr++;
|
||||||
digitalWrite(_dc, 1);
|
// digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(color);
|
SPI.transfer16(color);
|
||||||
}
|
}
|
||||||
bitmap += w;
|
bitmap += w;
|
||||||
|
|
@ -747,9 +799,9 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
SPI.transfer(ILI9341_SLPOUT);
|
SPI.transfer(ILI9341_SLPOUT);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) {
|
void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) {
|
||||||
|
|
@ -757,20 +809,19 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
while ((c = *text++)) {
|
while ((c = *text++)) {
|
||||||
const unsigned char * charpt=&font8x8[c][0];
|
const unsigned char * charpt=&font8x8[c][0];
|
||||||
|
|
||||||
setArea(x,y,x+7,y+(doublesize?15:7));
|
|
||||||
|
|
||||||
//SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(x,y,x+7,y+(doublesize?15:7));
|
||||||
//digitalWrite(_dc, 0);
|
//digitalWrite(_dc, 0);
|
||||||
//SPI.transfer(TFT_RAMWR);
|
//SPI.transfer(TFT_RAMWR);
|
||||||
|
//digitalWrite(_dc, 1);
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
for (int i=0;i<8;i++)
|
for (int i=0;i<8;i++)
|
||||||
{
|
{
|
||||||
unsigned char bits;
|
unsigned char bits;
|
||||||
if (doublesize) {
|
if (doublesize) {
|
||||||
bits = *charpt;
|
bits = *charpt;
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
if (bits&0x01) SPI.transfer16(fgcolor);
|
if (bits&0x01) SPI.transfer16(fgcolor);
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
bits = bits >> 1;
|
bits = bits >> 1;
|
||||||
|
|
@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
}
|
}
|
||||||
bits = *charpt++;
|
bits = *charpt++;
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
if (bits&0x01) SPI.transfer16(fgcolor);
|
if (bits&0x01) SPI.transfer16(fgcolor);
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
bits = bits >> 1;
|
bits = bits >> 1;
|
||||||
|
|
@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) {
|
|
||||||
setArea(x,y,x+w-1,y+h-1);
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
SPI.transfer(TFT_RAMWR);
|
|
||||||
int i;
|
|
||||||
for (i=0; i<(w*h); i++)
|
|
||||||
{
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
SPI.transfer16(color);
|
|
||||||
}
|
|
||||||
#ifdef ILI9341
|
|
||||||
digitalWrite(_dc, 0);
|
|
||||||
SPI.transfer(ILI9341_SLPOUT);
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
#endif
|
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************************************
|
/***********************************************************************************************
|
||||||
DMA functions
|
DMA functions
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
|
|
|
||||||
|
|
@ -21,18 +21,15 @@
|
||||||
#define B16(rgb) ((rgb<<3)&0xf8)
|
#define B16(rgb) ((rgb<<3)&0xf8)
|
||||||
|
|
||||||
|
|
||||||
#define TFT_HEIGHT 192
|
#ifdef LOHRES
|
||||||
|
|
||||||
#ifdef ILI9341
|
|
||||||
#define TFT_WIDTH 256
|
|
||||||
#define TFT_REALWIDTH 320
|
|
||||||
#define TFT_REALHEIGHT 240
|
|
||||||
#endif
|
|
||||||
#ifdef ST7789
|
|
||||||
#define TFT_WIDTH 240
|
#define TFT_WIDTH 240
|
||||||
#define TFT_REALWIDTH 240
|
#define TFT_REALWIDTH 240
|
||||||
#define TFT_REALHEIGHT 240
|
#else
|
||||||
|
#define TFT_WIDTH 256
|
||||||
|
#define TFT_REALWIDTH 320
|
||||||
#endif
|
#endif
|
||||||
|
#define TFT_HEIGHT 192
|
||||||
|
#define TFT_REALHEIGHT 240
|
||||||
|
|
||||||
#define LINES_PER_BLOCK 64
|
#define LINES_PER_BLOCK 64
|
||||||
#define NR_OF_BLOCK 4
|
#define NR_OF_BLOCK 4
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,7 @@
|
||||||
#include "platform_config.h"
|
#include "platform_config.h"
|
||||||
|
|
||||||
#ifdef TEENSYBOY
|
//#define ST7789 1
|
||||||
#define ST7789 1
|
//#define ILI9341 1
|
||||||
#define ROTATE_SCREEN 1
|
|
||||||
#else
|
|
||||||
#define ILI9341 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define TFT_LINEARINT 1
|
#define TFT_LINEARINT 1
|
||||||
#define LINEARINT_HACK 1
|
#define LINEARINT_HACK 1
|
||||||
|
|
|
||||||
|
|
@ -1373,7 +1373,7 @@ void emu_init(void)
|
||||||
|
|
||||||
|
|
||||||
emu_InitJoysticks();
|
emu_InitJoysticks();
|
||||||
#ifdef TEENSYBOY
|
#ifdef SWAP_JOYSTICK
|
||||||
joySwapped = true;
|
joySwapped = true;
|
||||||
#else
|
#else
|
||||||
joySwapped = false;
|
joySwapped = false;
|
||||||
|
|
|
||||||
|
|
@ -2,31 +2,17 @@
|
||||||
#define IOPINS_H
|
#define IOPINS_H
|
||||||
|
|
||||||
#include "platform_config.h"
|
#include "platform_config.h"
|
||||||
#include "tft_t_dma_config.h"
|
|
||||||
|
|
||||||
#ifndef OLD_LAYOUT
|
#ifndef OLD_LAYOUT
|
||||||
|
|
||||||
#ifdef ST7789
|
|
||||||
// ST7789
|
|
||||||
#define TFT_SCLK 13
|
#define TFT_SCLK 13
|
||||||
#define TFT_MOSI 11
|
#define TFT_MOSI 11
|
||||||
#define TFT_MISO 12
|
#define TFT_MISO 12
|
||||||
#define TFT_TOUCH_CS 255
|
#define TFT_TOUCH_CS 255
|
||||||
#define TFT_TOUCH_INT 255
|
#define TFT_TOUCH_INT 255
|
||||||
#define TFT_DC 9
|
#define TFT_DC 9
|
||||||
#define TFT_CS 255
|
#define TFT_CS 22 // 255 for LORES ST7789 (NO CS)
|
||||||
#define TFT_RST 23
|
#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V
|
||||||
#else
|
|
||||||
// ILI9341
|
|
||||||
#define TFT_SCLK 13
|
|
||||||
#define TFT_MOSI 11
|
|
||||||
#define TFT_MISO 12
|
|
||||||
#define TFT_TOUCH_CS 255 //38
|
|
||||||
#define TFT_TOUCH_INT 255 //37
|
|
||||||
#define TFT_DC 9
|
|
||||||
#define TFT_CS 23
|
|
||||||
#define TFT_RST 255
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// PSRAM
|
// PSRAM
|
||||||
#define PSRAM_CS 36
|
#define PSRAM_CS 36
|
||||||
|
|
@ -38,10 +24,10 @@
|
||||||
#define SD_SCLK 13
|
#define SD_SCLK 13
|
||||||
#define SD_MOSI 12
|
#define SD_MOSI 12
|
||||||
#define SD_MISO 11
|
#define SD_MISO 11
|
||||||
#ifdef TEENSYBOY
|
#ifdef EXTERNAL_SD
|
||||||
#define SD_CS BUILTIN_SDCARD
|
#define SD_CS 8
|
||||||
#else
|
#else
|
||||||
#define SD_CS 5
|
#define SD_CS BUILTIN_SDCARD
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// I2C keyboard
|
// I2C keyboard
|
||||||
|
|
@ -54,17 +40,15 @@
|
||||||
#define PIN_JOY2_BTN 17
|
#define PIN_JOY2_BTN 17
|
||||||
#define PIN_KEY_USER1 3 //34
|
#define PIN_KEY_USER1 3 //34
|
||||||
#define PIN_KEY_USER2 4 //35
|
#define PIN_KEY_USER2 4 //35
|
||||||
//#define PIN_KEY_USER3 255
|
//#define PIN_KEY_USER3 33
|
||||||
//#define PIN_KEY_USER4 255
|
//#define PIN_KEY_USER4 39
|
||||||
|
|
||||||
#ifdef TEENSYBOY
|
|
||||||
// Second joystick
|
// Second joystick
|
||||||
#define PIN_JOY1_BTN 2
|
#define PIN_JOY1_BTN 2
|
||||||
#define PIN_JOY1_1 14 // UP
|
#define PIN_JOY1_1 14 // UP
|
||||||
#define PIN_JOY1_2 7 // DOWN
|
#define PIN_JOY1_2 7 // DOWN
|
||||||
#define PIN_JOY1_3 6 // RIGHT
|
#define PIN_JOY1_3 6 // RIGHT
|
||||||
#define PIN_JOY1_4 5 // LEFT
|
#define PIN_JOY1_4 5 // LEFT
|
||||||
#endif
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
// OLD LAYOUT!!!!
|
// OLD LAYOUT!!!!
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,20 @@
|
||||||
#ifndef _PLATFORM_CONFIG_H_
|
#ifndef _PLATFORM_CONFIG_H_
|
||||||
#define _PLATFORM_CONFIG_H_
|
#define _PLATFORM_CONFIG_H_
|
||||||
|
|
||||||
//#define OLD_LAYOUT 1
|
//#define OLD_LAYOUT 1
|
||||||
//#define TEENSYBOY 1
|
|
||||||
|
|
||||||
#define HAS_PSRAM 1
|
#define ILI9341 1
|
||||||
|
//#define ST7789 1
|
||||||
|
//#define SWAP_JOYSTICK 1
|
||||||
|
//#define LOHRES 1
|
||||||
|
//#define ROTATE_SCREEN 1
|
||||||
|
#define EXTERNAL_SD 1
|
||||||
|
|
||||||
//#define USE_SDFAT 1
|
#define HAS_PSRAM 1
|
||||||
//#define SD_FAT_TYPE 1
|
|
||||||
//#define USE_SDFS 1
|
//#define USE_SDFAT 1
|
||||||
//#define SDFSDEV "1:"
|
//#define SD_FAT_TYPE 1
|
||||||
|
//#define USE_SDFS 1
|
||||||
|
//#define SDFSDEV "1:"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = {
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static void dmaInterrupt() {
|
static void dmaInterrupt() {
|
||||||
dmatx.clearInterrupt();
|
dmatx.clearInterrupt();
|
||||||
curTransfer++;
|
curTransfer++;
|
||||||
|
|
@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t
|
||||||
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
||||||
int dx=0;
|
int dx=0;
|
||||||
int dy=0;
|
int dy=0;
|
||||||
|
|
||||||
#ifdef ST7789
|
#ifdef ST7789
|
||||||
|
if (TFT_REALWIDTH == TFT_REALHEIGHT)
|
||||||
|
{
|
||||||
#ifdef ROTATE_SCREEN
|
#ifdef ROTATE_SCREEN
|
||||||
if (!flipped) {
|
if (!flipped) {
|
||||||
dy += 80;
|
dy += 80;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if (flipped) {
|
if (flipped) {
|
||||||
dx += 80;
|
dx += 80;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_CASET);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(x1+dx);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(x2+dx);
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_PASET);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(y1+dy);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(y2+dy);
|
||||||
|
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_RAMWR);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
|
||||||
|
|
@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void TFT_T_DMA::begin(void) {
|
void TFT_T_DMA::begin(void) {
|
||||||
SPI.setMOSI(_mosi);
|
SPI.setMOSI(_mosi);
|
||||||
SPI.setMISO(_miso);
|
SPI.setMISO(_miso);
|
||||||
|
|
@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) {
|
||||||
SPI.begin();
|
SPI.begin();
|
||||||
|
|
||||||
// Initialize display
|
// Initialize display
|
||||||
if (_rst < 255) { // toggle RST low to reset
|
if (_rst != 0xff) {
|
||||||
pinMode(_rst, OUTPUT);
|
pinMode(_rst, OUTPUT);
|
||||||
digitalWrite(_rst, HIGH);
|
digitalWrite(_rst, HIGH);
|
||||||
delay(5);
|
delay(100);
|
||||||
digitalWrite(_rst, LOW);
|
digitalWrite(_rst, LOW);
|
||||||
delay(20);
|
delay(100);
|
||||||
digitalWrite(_rst, HIGH);
|
digitalWrite(_rst, HIGH);
|
||||||
delay(120);
|
delay(200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
const uint8_t *addr = init_commands;
|
const uint8_t *addr = init_commands;
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
|
@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) {
|
||||||
SPI.transfer(ILI9341_DISPON);
|
SPI.transfer(ILI9341_DISPON);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef ST7789
|
#ifdef ST7789
|
||||||
uint8_t numCommands, numArgs;
|
uint8_t numCommands, numArgs;
|
||||||
|
|
@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) {
|
||||||
if(ms) {
|
if(ms) {
|
||||||
ms = *addr++; // Read post-command delay time (ms)
|
ms = *addr++; // Read post-command delay time (ms)
|
||||||
if(ms == 255) ms = 500; // If 255, delay for 500 ms
|
if(ms == 255) ms = 500; // If 255, delay for 500 ms
|
||||||
SPI.endTransaction();
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
|
SPI.endTransaction();
|
||||||
delay(ms);
|
delay(ms);
|
||||||
//beginSPITransaction();
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
|
digitalWrite(_cs, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
digitalWrite(_cs, 1);
|
||||||
#endif
|
#endif
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
|
SPI.endTransaction();
|
||||||
|
|
||||||
cancelled = false;
|
cancelled = false;
|
||||||
|
|
||||||
#ifdef FLIP_SCREEN
|
#ifdef FLIP_SCREEN
|
||||||
flipscreen(true);
|
flipscreen(true);
|
||||||
#else
|
#else
|
||||||
flipscreen(false);
|
flipscreen(false);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef ST7789
|
||||||
|
if (TFT_REALWIDTH != TFT_REALHEIGHT)
|
||||||
|
{
|
||||||
|
flipscreen(true);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) {
|
||||||
#endif
|
#endif
|
||||||
dmatx = dmasettings[0];
|
dmatx = dmasettings[0];
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1);
|
||||||
digitalWrite(_dc, 0);
|
digitalWrite(_dc, 0);
|
||||||
SPI.transfer(TFT_RAMWR);
|
SPI.transfer(TFT_RAMWR);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
|
|
@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) {
|
||||||
No DMA functions
|
No DMA functions
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
SPI.transfer(TFT_RAMWR);
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
int i,j;
|
int i,j;
|
||||||
for (j=0; j<TFT_REALHEIGHT; j++)
|
for (j=0; j<TFT_REALHEIGHT; j++)
|
||||||
{
|
{
|
||||||
for (i=0; i<TFT_REALWIDTH; i++) {
|
for (i=0; i<TFT_REALWIDTH; i++) {
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(color);
|
SPI.transfer16(color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -643,24 +677,43 @@ void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) {
|
||||||
void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
|
||||||
setArea(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(x,y,x+w-1,y+h-1);
|
||||||
|
// digitalWrite(_dc, 0);
|
||||||
|
// SPI.transfer(TFT_RAMWR);
|
||||||
|
int i;
|
||||||
|
for (i=0; i<(w*h); i++)
|
||||||
|
{
|
||||||
|
//digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(color);
|
||||||
|
}
|
||||||
|
#ifdef ILI9341
|
||||||
digitalWrite(_dc, 0);
|
digitalWrite(_dc, 0);
|
||||||
SPI.transfer(TFT_RAMWR);
|
SPI.transfer(ILI9341_SLPOUT);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
#endif
|
||||||
|
digitalWrite(_cs, 1);
|
||||||
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
||||||
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
|
||||||
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
int i,j;
|
int i,j;
|
||||||
for (j=0; j<240; j++)
|
for (j=0; j<240; j++)
|
||||||
{
|
{
|
||||||
for (i=0; i<TFT_WIDTH; i++) {
|
for (i=0; i<TFT_WIDTH; i++) {
|
||||||
digitalWrite(_dc, 1);
|
// digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(*pcolors++);
|
SPI.transfer16(*pcolors++);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -670,9 +723,8 @@ void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) {
|
void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) {
|
||||||
|
|
@ -723,12 +775,12 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setArea(arx, ary, arx+arw-1, ary+arh-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(arx, ary, arx+arw-1, ary+arh-1);
|
||||||
SPI.transfer(TFT_RAMWR);
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
|
|
||||||
bitmap = bitmap + bmp_offy*w + bmp_offx;
|
bitmap = bitmap + bmp_offy*w + bmp_offx;
|
||||||
for (int row=0;row<arh; row++)
|
for (int row=0;row<arh; row++)
|
||||||
|
|
@ -737,7 +789,7 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
for (int col=0;col<arw; col++)
|
for (int col=0;col<arw; col++)
|
||||||
{
|
{
|
||||||
uint16_t color = *bmp_ptr++;
|
uint16_t color = *bmp_ptr++;
|
||||||
digitalWrite(_dc, 1);
|
// digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(color);
|
SPI.transfer16(color);
|
||||||
}
|
}
|
||||||
bitmap += w;
|
bitmap += w;
|
||||||
|
|
@ -747,9 +799,9 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
SPI.transfer(ILI9341_SLPOUT);
|
SPI.transfer(ILI9341_SLPOUT);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) {
|
void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) {
|
||||||
|
|
@ -757,20 +809,19 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
while ((c = *text++)) {
|
while ((c = *text++)) {
|
||||||
const unsigned char * charpt=&font8x8[c][0];
|
const unsigned char * charpt=&font8x8[c][0];
|
||||||
|
|
||||||
setArea(x,y,x+7,y+(doublesize?15:7));
|
|
||||||
|
|
||||||
//SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(x,y,x+7,y+(doublesize?15:7));
|
||||||
//digitalWrite(_dc, 0);
|
//digitalWrite(_dc, 0);
|
||||||
//SPI.transfer(TFT_RAMWR);
|
//SPI.transfer(TFT_RAMWR);
|
||||||
|
//digitalWrite(_dc, 1);
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
for (int i=0;i<8;i++)
|
for (int i=0;i<8;i++)
|
||||||
{
|
{
|
||||||
unsigned char bits;
|
unsigned char bits;
|
||||||
if (doublesize) {
|
if (doublesize) {
|
||||||
bits = *charpt;
|
bits = *charpt;
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
if (bits&0x01) SPI.transfer16(fgcolor);
|
if (bits&0x01) SPI.transfer16(fgcolor);
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
bits = bits >> 1;
|
bits = bits >> 1;
|
||||||
|
|
@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
}
|
}
|
||||||
bits = *charpt++;
|
bits = *charpt++;
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
if (bits&0x01) SPI.transfer16(fgcolor);
|
if (bits&0x01) SPI.transfer16(fgcolor);
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
bits = bits >> 1;
|
bits = bits >> 1;
|
||||||
|
|
@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) {
|
|
||||||
setArea(x,y,x+w-1,y+h-1);
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
SPI.transfer(TFT_RAMWR);
|
|
||||||
int i;
|
|
||||||
for (i=0; i<(w*h); i++)
|
|
||||||
{
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
SPI.transfer16(color);
|
|
||||||
}
|
|
||||||
#ifdef ILI9341
|
|
||||||
digitalWrite(_dc, 0);
|
|
||||||
SPI.transfer(ILI9341_SLPOUT);
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
#endif
|
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************************************
|
/***********************************************************************************************
|
||||||
DMA functions
|
DMA functions
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
|
|
|
||||||
|
|
@ -22,18 +22,15 @@
|
||||||
|
|
||||||
#define PAL_COLOR_MASK 0xff
|
#define PAL_COLOR_MASK 0xff
|
||||||
|
|
||||||
#define TFT_HEIGHT 240
|
#ifdef LOHRES
|
||||||
|
|
||||||
#ifdef ILI9341
|
|
||||||
#define TFT_WIDTH 320
|
|
||||||
#define TFT_REALWIDTH 320
|
|
||||||
#define TFT_REALHEIGHT 240
|
|
||||||
#endif
|
|
||||||
#ifdef ST7789
|
|
||||||
#define TFT_WIDTH 240
|
#define TFT_WIDTH 240
|
||||||
#define TFT_REALWIDTH 240
|
#define TFT_REALWIDTH 240
|
||||||
#define TFT_REALHEIGHT 240
|
#else
|
||||||
|
#define TFT_WIDTH 320
|
||||||
|
#define TFT_REALWIDTH 320
|
||||||
#endif
|
#endif
|
||||||
|
#define TFT_HEIGHT 240
|
||||||
|
#define TFT_REALHEIGHT 240
|
||||||
|
|
||||||
#define LINES_PER_BLOCK 64
|
#define LINES_PER_BLOCK 64
|
||||||
#define NR_OF_BLOCK 4
|
#define NR_OF_BLOCK 4
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,7 @@
|
||||||
#include "platform_config.h"
|
#include "platform_config.h"
|
||||||
|
|
||||||
#ifdef TEENSYBOY
|
//#define ST7789 1
|
||||||
#define ST7789 1
|
//#define ILI9341 1
|
||||||
#define ROTATE_SCREEN 1
|
|
||||||
#else
|
|
||||||
#define ILI9341 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define TFT_LINEARINT 1
|
#define TFT_LINEARINT 1
|
||||||
#define LINEARINT_HACK 1
|
#define LINEARINT_HACK 1
|
||||||
|
|
|
||||||
|
|
@ -1373,7 +1373,7 @@ void emu_init(void)
|
||||||
|
|
||||||
|
|
||||||
emu_InitJoysticks();
|
emu_InitJoysticks();
|
||||||
#ifdef TEENSYBOY
|
#ifdef SWAP_JOYSTICK
|
||||||
joySwapped = true;
|
joySwapped = true;
|
||||||
#else
|
#else
|
||||||
joySwapped = false;
|
joySwapped = false;
|
||||||
|
|
|
||||||
|
|
@ -2,31 +2,17 @@
|
||||||
#define IOPINS_H
|
#define IOPINS_H
|
||||||
|
|
||||||
#include "platform_config.h"
|
#include "platform_config.h"
|
||||||
#include "tft_t_dma_config.h"
|
|
||||||
|
|
||||||
#ifndef OLD_LAYOUT
|
#ifndef OLD_LAYOUT
|
||||||
|
|
||||||
#ifdef ST7789
|
|
||||||
// ST7789
|
|
||||||
#define TFT_SCLK 13
|
#define TFT_SCLK 13
|
||||||
#define TFT_MOSI 11
|
#define TFT_MOSI 11
|
||||||
#define TFT_MISO 12
|
#define TFT_MISO 12
|
||||||
#define TFT_TOUCH_CS 255
|
#define TFT_TOUCH_CS 255
|
||||||
#define TFT_TOUCH_INT 255
|
#define TFT_TOUCH_INT 255
|
||||||
#define TFT_DC 9
|
#define TFT_DC 9
|
||||||
#define TFT_CS 255
|
#define TFT_CS 22 // 255 for LORES ST7789 (NO CS)
|
||||||
#define TFT_RST 23
|
#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V
|
||||||
#else
|
|
||||||
// ILI9341
|
|
||||||
#define TFT_SCLK 13
|
|
||||||
#define TFT_MOSI 11
|
|
||||||
#define TFT_MISO 12
|
|
||||||
#define TFT_TOUCH_CS 255 //38
|
|
||||||
#define TFT_TOUCH_INT 255 //37
|
|
||||||
#define TFT_DC 9
|
|
||||||
#define TFT_CS 23
|
|
||||||
#define TFT_RST 255
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// PSRAM
|
// PSRAM
|
||||||
#define PSRAM_CS 36
|
#define PSRAM_CS 36
|
||||||
|
|
@ -38,10 +24,10 @@
|
||||||
#define SD_SCLK 13
|
#define SD_SCLK 13
|
||||||
#define SD_MOSI 12
|
#define SD_MOSI 12
|
||||||
#define SD_MISO 11
|
#define SD_MISO 11
|
||||||
#ifdef TEENSYBOY
|
#ifdef EXTERNAL_SD
|
||||||
#define SD_CS BUILTIN_SDCARD
|
#define SD_CS 8
|
||||||
#else
|
#else
|
||||||
#define SD_CS 5
|
#define SD_CS BUILTIN_SDCARD
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// I2C keyboard
|
// I2C keyboard
|
||||||
|
|
@ -54,17 +40,15 @@
|
||||||
#define PIN_JOY2_BTN 17
|
#define PIN_JOY2_BTN 17
|
||||||
#define PIN_KEY_USER1 3 //34
|
#define PIN_KEY_USER1 3 //34
|
||||||
#define PIN_KEY_USER2 4 //35
|
#define PIN_KEY_USER2 4 //35
|
||||||
//#define PIN_KEY_USER3 255
|
//#define PIN_KEY_USER3 33
|
||||||
//#define PIN_KEY_USER4 255
|
//#define PIN_KEY_USER4 39
|
||||||
|
|
||||||
#ifdef TEENSYBOY
|
|
||||||
// Second joystick
|
// Second joystick
|
||||||
#define PIN_JOY1_BTN 2
|
#define PIN_JOY1_BTN 2
|
||||||
#define PIN_JOY1_1 14 // UP
|
#define PIN_JOY1_1 14 // UP
|
||||||
#define PIN_JOY1_2 7 // DOWN
|
#define PIN_JOY1_2 7 // DOWN
|
||||||
#define PIN_JOY1_3 6 // RIGHT
|
#define PIN_JOY1_3 6 // RIGHT
|
||||||
#define PIN_JOY1_4 5 // LEFT
|
#define PIN_JOY1_4 5 // LEFT
|
||||||
#endif
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
// OLD LAYOUT!!!!
|
// OLD LAYOUT!!!!
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,20 @@
|
||||||
#ifndef _PLATFORM_CONFIG_H_
|
#ifndef _PLATFORM_CONFIG_H_
|
||||||
#define _PLATFORM_CONFIG_H_
|
#define _PLATFORM_CONFIG_H_
|
||||||
|
|
||||||
//#define OLD_LAYOUT 1
|
//#define OLD_LAYOUT 1
|
||||||
//#define TEENSYBOY 1
|
|
||||||
|
|
||||||
#define HAS_PSRAM 1
|
#define ILI9341 1
|
||||||
|
//#define ST7789 1
|
||||||
|
//#define SWAP_JOYSTICK 1
|
||||||
|
//#define LOHRES 1
|
||||||
|
//#define ROTATE_SCREEN 1
|
||||||
|
#define EXTERNAL_SD 1
|
||||||
|
|
||||||
//#define USE_SDFAT 1
|
#define HAS_PSRAM 1
|
||||||
//#define SD_FAT_TYPE 1
|
|
||||||
//#define USE_SDFS 1
|
//#define USE_SDFAT 1
|
||||||
//#define SDFSDEV "1:"
|
//#define SD_FAT_TYPE 1
|
||||||
|
//#define USE_SDFS 1
|
||||||
|
//#define SDFSDEV "1:"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = {
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static void dmaInterrupt() {
|
static void dmaInterrupt() {
|
||||||
dmatx.clearInterrupt();
|
dmatx.clearInterrupt();
|
||||||
curTransfer++;
|
curTransfer++;
|
||||||
|
|
@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t
|
||||||
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
||||||
int dx=0;
|
int dx=0;
|
||||||
int dy=0;
|
int dy=0;
|
||||||
|
|
||||||
#ifdef ST7789
|
#ifdef ST7789
|
||||||
|
if (TFT_REALWIDTH == TFT_REALHEIGHT)
|
||||||
|
{
|
||||||
#ifdef ROTATE_SCREEN
|
#ifdef ROTATE_SCREEN
|
||||||
if (!flipped) {
|
if (!flipped) {
|
||||||
dy += 80;
|
dy += 80;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if (flipped) {
|
if (flipped) {
|
||||||
dx += 80;
|
dx += 80;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_CASET);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(x1+dx);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(x2+dx);
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_PASET);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(y1+dy);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(y2+dy);
|
||||||
|
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_RAMWR);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
|
||||||
|
|
@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void TFT_T_DMA::begin(void) {
|
void TFT_T_DMA::begin(void) {
|
||||||
SPI.setMOSI(_mosi);
|
SPI.setMOSI(_mosi);
|
||||||
SPI.setMISO(_miso);
|
SPI.setMISO(_miso);
|
||||||
|
|
@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) {
|
||||||
SPI.begin();
|
SPI.begin();
|
||||||
|
|
||||||
// Initialize display
|
// Initialize display
|
||||||
if (_rst < 255) { // toggle RST low to reset
|
if (_rst != 0xff) {
|
||||||
pinMode(_rst, OUTPUT);
|
pinMode(_rst, OUTPUT);
|
||||||
digitalWrite(_rst, HIGH);
|
digitalWrite(_rst, HIGH);
|
||||||
delay(5);
|
delay(100);
|
||||||
digitalWrite(_rst, LOW);
|
digitalWrite(_rst, LOW);
|
||||||
delay(20);
|
delay(100);
|
||||||
digitalWrite(_rst, HIGH);
|
digitalWrite(_rst, HIGH);
|
||||||
delay(120);
|
delay(200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
const uint8_t *addr = init_commands;
|
const uint8_t *addr = init_commands;
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
|
@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) {
|
||||||
SPI.transfer(ILI9341_DISPON);
|
SPI.transfer(ILI9341_DISPON);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef ST7789
|
#ifdef ST7789
|
||||||
uint8_t numCommands, numArgs;
|
uint8_t numCommands, numArgs;
|
||||||
|
|
@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) {
|
||||||
if(ms) {
|
if(ms) {
|
||||||
ms = *addr++; // Read post-command delay time (ms)
|
ms = *addr++; // Read post-command delay time (ms)
|
||||||
if(ms == 255) ms = 500; // If 255, delay for 500 ms
|
if(ms == 255) ms = 500; // If 255, delay for 500 ms
|
||||||
SPI.endTransaction();
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
|
SPI.endTransaction();
|
||||||
delay(ms);
|
delay(ms);
|
||||||
//beginSPITransaction();
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
|
digitalWrite(_cs, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
digitalWrite(_cs, 1);
|
||||||
#endif
|
#endif
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
|
SPI.endTransaction();
|
||||||
|
|
||||||
cancelled = false;
|
cancelled = false;
|
||||||
|
|
||||||
#ifdef FLIP_SCREEN
|
#ifdef FLIP_SCREEN
|
||||||
flipscreen(true);
|
flipscreen(true);
|
||||||
#else
|
#else
|
||||||
flipscreen(false);
|
flipscreen(false);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef ST7789
|
||||||
|
if (TFT_REALWIDTH != TFT_REALHEIGHT)
|
||||||
|
{
|
||||||
|
flipscreen(true);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) {
|
||||||
#endif
|
#endif
|
||||||
dmatx = dmasettings[0];
|
dmatx = dmasettings[0];
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1);
|
||||||
digitalWrite(_dc, 0);
|
digitalWrite(_dc, 0);
|
||||||
SPI.transfer(TFT_RAMWR);
|
SPI.transfer(TFT_RAMWR);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
|
|
@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) {
|
||||||
No DMA functions
|
No DMA functions
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
SPI.transfer(TFT_RAMWR);
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
int i,j;
|
int i,j;
|
||||||
for (j=0; j<TFT_REALHEIGHT; j++)
|
for (j=0; j<TFT_REALHEIGHT; j++)
|
||||||
{
|
{
|
||||||
for (i=0; i<TFT_REALWIDTH; i++) {
|
for (i=0; i<TFT_REALWIDTH; i++) {
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(color);
|
SPI.transfer16(color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -643,24 +677,43 @@ void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) {
|
||||||
void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
|
||||||
setArea(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(x,y,x+w-1,y+h-1);
|
||||||
|
// digitalWrite(_dc, 0);
|
||||||
|
// SPI.transfer(TFT_RAMWR);
|
||||||
|
int i;
|
||||||
|
for (i=0; i<(w*h); i++)
|
||||||
|
{
|
||||||
|
//digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(color);
|
||||||
|
}
|
||||||
|
#ifdef ILI9341
|
||||||
digitalWrite(_dc, 0);
|
digitalWrite(_dc, 0);
|
||||||
SPI.transfer(TFT_RAMWR);
|
SPI.transfer(ILI9341_SLPOUT);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
#endif
|
||||||
|
digitalWrite(_cs, 1);
|
||||||
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
||||||
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
|
||||||
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
int i,j;
|
int i,j;
|
||||||
for (j=0; j<240; j++)
|
for (j=0; j<240; j++)
|
||||||
{
|
{
|
||||||
for (i=0; i<TFT_WIDTH; i++) {
|
for (i=0; i<TFT_WIDTH; i++) {
|
||||||
digitalWrite(_dc, 1);
|
// digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(*pcolors++);
|
SPI.transfer16(*pcolors++);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -670,9 +723,8 @@ void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) {
|
void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) {
|
||||||
|
|
@ -723,12 +775,12 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setArea(arx, ary, arx+arw-1, ary+arh-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(arx, ary, arx+arw-1, ary+arh-1);
|
||||||
SPI.transfer(TFT_RAMWR);
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
|
|
||||||
bitmap = bitmap + bmp_offy*w + bmp_offx;
|
bitmap = bitmap + bmp_offy*w + bmp_offx;
|
||||||
for (int row=0;row<arh; row++)
|
for (int row=0;row<arh; row++)
|
||||||
|
|
@ -737,7 +789,7 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
for (int col=0;col<arw; col++)
|
for (int col=0;col<arw; col++)
|
||||||
{
|
{
|
||||||
uint16_t color = *bmp_ptr++;
|
uint16_t color = *bmp_ptr++;
|
||||||
digitalWrite(_dc, 1);
|
// digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(color);
|
SPI.transfer16(color);
|
||||||
}
|
}
|
||||||
bitmap += w;
|
bitmap += w;
|
||||||
|
|
@ -747,9 +799,9 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
SPI.transfer(ILI9341_SLPOUT);
|
SPI.transfer(ILI9341_SLPOUT);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) {
|
void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) {
|
||||||
|
|
@ -757,20 +809,19 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
while ((c = *text++)) {
|
while ((c = *text++)) {
|
||||||
const unsigned char * charpt=&font8x8[c][0];
|
const unsigned char * charpt=&font8x8[c][0];
|
||||||
|
|
||||||
setArea(x,y,x+7,y+(doublesize?15:7));
|
|
||||||
|
|
||||||
//SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(x,y,x+7,y+(doublesize?15:7));
|
||||||
//digitalWrite(_dc, 0);
|
//digitalWrite(_dc, 0);
|
||||||
//SPI.transfer(TFT_RAMWR);
|
//SPI.transfer(TFT_RAMWR);
|
||||||
|
//digitalWrite(_dc, 1);
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
for (int i=0;i<8;i++)
|
for (int i=0;i<8;i++)
|
||||||
{
|
{
|
||||||
unsigned char bits;
|
unsigned char bits;
|
||||||
if (doublesize) {
|
if (doublesize) {
|
||||||
bits = *charpt;
|
bits = *charpt;
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
if (bits&0x01) SPI.transfer16(fgcolor);
|
if (bits&0x01) SPI.transfer16(fgcolor);
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
bits = bits >> 1;
|
bits = bits >> 1;
|
||||||
|
|
@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
}
|
}
|
||||||
bits = *charpt++;
|
bits = *charpt++;
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
if (bits&0x01) SPI.transfer16(fgcolor);
|
if (bits&0x01) SPI.transfer16(fgcolor);
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
bits = bits >> 1;
|
bits = bits >> 1;
|
||||||
|
|
@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) {
|
|
||||||
setArea(x,y,x+w-1,y+h-1);
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
SPI.transfer(TFT_RAMWR);
|
|
||||||
int i;
|
|
||||||
for (i=0; i<(w*h); i++)
|
|
||||||
{
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
SPI.transfer16(color);
|
|
||||||
}
|
|
||||||
#ifdef ILI9341
|
|
||||||
digitalWrite(_dc, 0);
|
|
||||||
SPI.transfer(ILI9341_SLPOUT);
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
#endif
|
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************************************
|
/***********************************************************************************************
|
||||||
DMA functions
|
DMA functions
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
|
|
|
||||||
|
|
@ -22,18 +22,15 @@
|
||||||
|
|
||||||
#define PAL_COLOR_MASK 0xff
|
#define PAL_COLOR_MASK 0xff
|
||||||
|
|
||||||
#define TFT_HEIGHT 144
|
#ifdef LOHRES
|
||||||
|
|
||||||
#ifdef ILI9341
|
|
||||||
#define TFT_WIDTH 320
|
|
||||||
#define TFT_REALWIDTH 320
|
|
||||||
#define TFT_REALHEIGHT 240
|
|
||||||
#endif
|
|
||||||
#ifdef ST7789
|
|
||||||
#define TFT_WIDTH 240
|
#define TFT_WIDTH 240
|
||||||
#define TFT_REALWIDTH 240
|
#define TFT_REALWIDTH 240
|
||||||
#define TFT_REALHEIGHT 240
|
#else
|
||||||
|
#define TFT_WIDTH 320
|
||||||
|
#define TFT_REALWIDTH 320
|
||||||
#endif
|
#endif
|
||||||
|
#define TFT_HEIGHT 144
|
||||||
|
#define TFT_REALHEIGHT 240
|
||||||
|
|
||||||
#define LINES_PER_BLOCK 64
|
#define LINES_PER_BLOCK 64
|
||||||
#define NR_OF_BLOCK 4
|
#define NR_OF_BLOCK 4
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,7 @@
|
||||||
#include "platform_config.h"
|
#include "platform_config.h"
|
||||||
|
|
||||||
#ifdef TEENSYBOY
|
//#define ST7789 1
|
||||||
#define ST7789 1
|
//#define ILI9341 1
|
||||||
#define ROTATE_SCREEN 1
|
|
||||||
#else
|
|
||||||
#define ILI9341 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define TFT_LINEARINT 1
|
#define TFT_LINEARINT 1
|
||||||
#define LINEARINT_HACK 1
|
#define LINEARINT_HACK 1
|
||||||
|
|
|
||||||
|
|
@ -1373,7 +1373,7 @@ void emu_init(void)
|
||||||
|
|
||||||
|
|
||||||
emu_InitJoysticks();
|
emu_InitJoysticks();
|
||||||
#ifdef TEENSYBOY
|
#ifdef SWAP_JOYSTICK
|
||||||
joySwapped = true;
|
joySwapped = true;
|
||||||
#else
|
#else
|
||||||
joySwapped = false;
|
joySwapped = false;
|
||||||
|
|
|
||||||
|
|
@ -2,31 +2,17 @@
|
||||||
#define IOPINS_H
|
#define IOPINS_H
|
||||||
|
|
||||||
#include "platform_config.h"
|
#include "platform_config.h"
|
||||||
#include "tft_t_dma_config.h"
|
|
||||||
|
|
||||||
#ifndef OLD_LAYOUT
|
#ifndef OLD_LAYOUT
|
||||||
|
|
||||||
#ifdef ST7789
|
|
||||||
// ST7789
|
|
||||||
#define TFT_SCLK 13
|
#define TFT_SCLK 13
|
||||||
#define TFT_MOSI 11
|
#define TFT_MOSI 11
|
||||||
#define TFT_MISO 12
|
#define TFT_MISO 12
|
||||||
#define TFT_TOUCH_CS 255
|
#define TFT_TOUCH_CS 255
|
||||||
#define TFT_TOUCH_INT 255
|
#define TFT_TOUCH_INT 255
|
||||||
#define TFT_DC 9
|
#define TFT_DC 9
|
||||||
#define TFT_CS 255
|
#define TFT_CS 22 // 255 for LORES ST7789 (NO CS)
|
||||||
#define TFT_RST 23
|
#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V
|
||||||
#else
|
|
||||||
// ILI9341
|
|
||||||
#define TFT_SCLK 13
|
|
||||||
#define TFT_MOSI 11
|
|
||||||
#define TFT_MISO 12
|
|
||||||
#define TFT_TOUCH_CS 255 //38
|
|
||||||
#define TFT_TOUCH_INT 255 //37
|
|
||||||
#define TFT_DC 9
|
|
||||||
#define TFT_CS 23
|
|
||||||
#define TFT_RST 255
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// PSRAM
|
// PSRAM
|
||||||
#define PSRAM_CS 36
|
#define PSRAM_CS 36
|
||||||
|
|
@ -38,10 +24,10 @@
|
||||||
#define SD_SCLK 13
|
#define SD_SCLK 13
|
||||||
#define SD_MOSI 12
|
#define SD_MOSI 12
|
||||||
#define SD_MISO 11
|
#define SD_MISO 11
|
||||||
#ifdef TEENSYBOY
|
#ifdef EXTERNAL_SD
|
||||||
#define SD_CS BUILTIN_SDCARD
|
#define SD_CS 8
|
||||||
#else
|
#else
|
||||||
#define SD_CS 5
|
#define SD_CS BUILTIN_SDCARD
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// I2C keyboard
|
// I2C keyboard
|
||||||
|
|
@ -54,17 +40,15 @@
|
||||||
#define PIN_JOY2_BTN 17
|
#define PIN_JOY2_BTN 17
|
||||||
#define PIN_KEY_USER1 3 //34
|
#define PIN_KEY_USER1 3 //34
|
||||||
#define PIN_KEY_USER2 4 //35
|
#define PIN_KEY_USER2 4 //35
|
||||||
//#define PIN_KEY_USER3 255
|
//#define PIN_KEY_USER3 33
|
||||||
//#define PIN_KEY_USER4 255
|
//#define PIN_KEY_USER4 39
|
||||||
|
|
||||||
#ifdef TEENSYBOY
|
|
||||||
// Second joystick
|
// Second joystick
|
||||||
#define PIN_JOY1_BTN 2
|
#define PIN_JOY1_BTN 2
|
||||||
#define PIN_JOY1_1 14 // UP
|
#define PIN_JOY1_1 14 // UP
|
||||||
#define PIN_JOY1_2 7 // DOWN
|
#define PIN_JOY1_2 7 // DOWN
|
||||||
#define PIN_JOY1_3 6 // RIGHT
|
#define PIN_JOY1_3 6 // RIGHT
|
||||||
#define PIN_JOY1_4 5 // LEFT
|
#define PIN_JOY1_4 5 // LEFT
|
||||||
#endif
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
// OLD LAYOUT!!!!
|
// OLD LAYOUT!!!!
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,20 @@
|
||||||
#ifndef _PLATFORM_CONFIG_H_
|
#ifndef _PLATFORM_CONFIG_H_
|
||||||
#define _PLATFORM_CONFIG_H_
|
#define _PLATFORM_CONFIG_H_
|
||||||
|
|
||||||
//#define OLD_LAYOUT 1
|
//#define OLD_LAYOUT 1
|
||||||
//#define TEENSYBOY 1
|
|
||||||
|
|
||||||
//#define HAS_PSRAM 1
|
#define ILI9341 1
|
||||||
|
//#define ST7789 1
|
||||||
|
//#define SWAP_JOYSTICK 1
|
||||||
|
//#define LOHRES 1
|
||||||
|
//#define ROTATE_SCREEN 1
|
||||||
|
#define EXTERNAL_SD 1
|
||||||
|
|
||||||
//#define USE_SDFAT 1
|
#define HAS_PSRAM 1
|
||||||
//#define SD_FAT_TYPE 1
|
|
||||||
//#define USE_SDFS 1
|
//#define USE_SDFAT 1
|
||||||
//#define SDFSDEV "1:"
|
//#define SD_FAT_TYPE 1
|
||||||
|
//#define USE_SDFS 1
|
||||||
|
//#define SDFSDEV "1:"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -8,18 +8,19 @@ extern "C" {
|
||||||
#include "mcume.h"
|
#include "mcume.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
TFT_T_DMA tft = TFT_T_DMA(TFT_CS, TFT_DC, TFT_RST, TFT_MOSI, TFT_SCLK, TFT_MISO, TFT_TOUCH_CS, TFT_TOUCH_INT);
|
TFT_T_DMA tft = TFT_T_DMA(TFT_CS, TFT_DC, TFT_RST, TFT_MOSI, TFT_SCLK, TFT_MISO, TFT_TOUCH_CS, TFT_TOUCH_INT);
|
||||||
static int xOffLogo=0;
|
static int xOffLogo=0;
|
||||||
static int swipeAngle=0;
|
static int swipeAngle=0;
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
//emu_sndInit();
|
//emu_sndInit();
|
||||||
|
|
||||||
tft.begin();
|
tft.begin();
|
||||||
//emu_sndPlaySound(0, 255, 4000);
|
//emu_sndPlaySound(0, 255, 4000);
|
||||||
|
|
||||||
emu_init();
|
emu_init();
|
||||||
|
//delay(5000);
|
||||||
|
//toggleMenu(false);
|
||||||
|
//tft.fillScreenNoDma(RGBVAL16(0x00,0x00,0x00));
|
||||||
|
//tft.startDMA();
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t col=0x00;
|
static uint8_t col=0x00;
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = {
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static void dmaInterrupt() {
|
static void dmaInterrupt() {
|
||||||
dmatx.clearInterrupt();
|
dmatx.clearInterrupt();
|
||||||
curTransfer++;
|
curTransfer++;
|
||||||
|
|
@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t
|
||||||
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
||||||
int dx=0;
|
int dx=0;
|
||||||
int dy=0;
|
int dy=0;
|
||||||
|
|
||||||
#ifdef ST7789
|
#ifdef ST7789
|
||||||
|
if (TFT_REALWIDTH == TFT_REALHEIGHT)
|
||||||
|
{
|
||||||
#ifdef ROTATE_SCREEN
|
#ifdef ROTATE_SCREEN
|
||||||
if (!flipped) {
|
if (!flipped) {
|
||||||
dy += 80;
|
dy += 80;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if (flipped) {
|
if (flipped) {
|
||||||
dx += 80;
|
dx += 80;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_CASET);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(x1+dx);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(x2+dx);
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_PASET);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(y1+dy);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(y2+dy);
|
||||||
|
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_RAMWR);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
|
||||||
|
|
@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void TFT_T_DMA::begin(void) {
|
void TFT_T_DMA::begin(void) {
|
||||||
SPI.setMOSI(_mosi);
|
SPI.setMOSI(_mosi);
|
||||||
SPI.setMISO(_miso);
|
SPI.setMISO(_miso);
|
||||||
|
|
@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) {
|
||||||
SPI.begin();
|
SPI.begin();
|
||||||
|
|
||||||
// Initialize display
|
// Initialize display
|
||||||
if (_rst < 255) { // toggle RST low to reset
|
if (_rst != 0xff) {
|
||||||
pinMode(_rst, OUTPUT);
|
pinMode(_rst, OUTPUT);
|
||||||
digitalWrite(_rst, HIGH);
|
digitalWrite(_rst, HIGH);
|
||||||
delay(5);
|
delay(100);
|
||||||
digitalWrite(_rst, LOW);
|
digitalWrite(_rst, LOW);
|
||||||
delay(20);
|
delay(100);
|
||||||
digitalWrite(_rst, HIGH);
|
digitalWrite(_rst, HIGH);
|
||||||
delay(120);
|
delay(200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
const uint8_t *addr = init_commands;
|
const uint8_t *addr = init_commands;
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
|
@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) {
|
||||||
SPI.transfer(ILI9341_DISPON);
|
SPI.transfer(ILI9341_DISPON);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef ST7789
|
#ifdef ST7789
|
||||||
uint8_t numCommands, numArgs;
|
uint8_t numCommands, numArgs;
|
||||||
|
|
@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) {
|
||||||
if(ms) {
|
if(ms) {
|
||||||
ms = *addr++; // Read post-command delay time (ms)
|
ms = *addr++; // Read post-command delay time (ms)
|
||||||
if(ms == 255) ms = 500; // If 255, delay for 500 ms
|
if(ms == 255) ms = 500; // If 255, delay for 500 ms
|
||||||
SPI.endTransaction();
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
|
SPI.endTransaction();
|
||||||
delay(ms);
|
delay(ms);
|
||||||
//beginSPITransaction();
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
|
digitalWrite(_cs, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
digitalWrite(_cs, 1);
|
||||||
#endif
|
#endif
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
|
SPI.endTransaction();
|
||||||
|
|
||||||
cancelled = false;
|
cancelled = false;
|
||||||
|
|
||||||
#ifdef FLIP_SCREEN
|
#ifdef FLIP_SCREEN
|
||||||
flipscreen(true);
|
flipscreen(true);
|
||||||
#else
|
#else
|
||||||
flipscreen(false);
|
flipscreen(false);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef ST7789
|
||||||
|
if (TFT_REALWIDTH != TFT_REALHEIGHT)
|
||||||
|
{
|
||||||
|
flipscreen(true);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) {
|
||||||
#endif
|
#endif
|
||||||
dmatx = dmasettings[0];
|
dmatx = dmasettings[0];
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1);
|
||||||
digitalWrite(_dc, 0);
|
digitalWrite(_dc, 0);
|
||||||
SPI.transfer(TFT_RAMWR);
|
SPI.transfer(TFT_RAMWR);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
|
|
@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) {
|
||||||
No DMA functions
|
No DMA functions
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
SPI.transfer(TFT_RAMWR);
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
int i,j;
|
int i,j;
|
||||||
for (j=0; j<TFT_REALHEIGHT; j++)
|
for (j=0; j<TFT_REALHEIGHT; j++)
|
||||||
{
|
{
|
||||||
for (i=0; i<TFT_REALWIDTH; i++) {
|
for (i=0; i<TFT_REALWIDTH; i++) {
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(color);
|
SPI.transfer16(color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -643,24 +677,43 @@ void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) {
|
||||||
void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
|
||||||
setArea(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(x,y,x+w-1,y+h-1);
|
||||||
|
// digitalWrite(_dc, 0);
|
||||||
|
// SPI.transfer(TFT_RAMWR);
|
||||||
|
int i;
|
||||||
|
for (i=0; i<(w*h); i++)
|
||||||
|
{
|
||||||
|
//digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(color);
|
||||||
|
}
|
||||||
|
#ifdef ILI9341
|
||||||
digitalWrite(_dc, 0);
|
digitalWrite(_dc, 0);
|
||||||
SPI.transfer(TFT_RAMWR);
|
SPI.transfer(ILI9341_SLPOUT);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
#endif
|
||||||
|
digitalWrite(_cs, 1);
|
||||||
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
||||||
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
|
||||||
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
int i,j;
|
int i,j;
|
||||||
for (j=0; j<240; j++)
|
for (j=0; j<240; j++)
|
||||||
{
|
{
|
||||||
for (i=0; i<TFT_WIDTH; i++) {
|
for (i=0; i<TFT_WIDTH; i++) {
|
||||||
digitalWrite(_dc, 1);
|
// digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(*pcolors++);
|
SPI.transfer16(*pcolors++);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -670,9 +723,8 @@ void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) {
|
void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) {
|
||||||
|
|
@ -723,12 +775,12 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setArea(arx, ary, arx+arw-1, ary+arh-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(arx, ary, arx+arw-1, ary+arh-1);
|
||||||
SPI.transfer(TFT_RAMWR);
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
|
|
||||||
bitmap = bitmap + bmp_offy*w + bmp_offx;
|
bitmap = bitmap + bmp_offy*w + bmp_offx;
|
||||||
for (int row=0;row<arh; row++)
|
for (int row=0;row<arh; row++)
|
||||||
|
|
@ -737,7 +789,7 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
for (int col=0;col<arw; col++)
|
for (int col=0;col<arw; col++)
|
||||||
{
|
{
|
||||||
uint16_t color = *bmp_ptr++;
|
uint16_t color = *bmp_ptr++;
|
||||||
digitalWrite(_dc, 1);
|
// digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(color);
|
SPI.transfer16(color);
|
||||||
}
|
}
|
||||||
bitmap += w;
|
bitmap += w;
|
||||||
|
|
@ -747,9 +799,9 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
SPI.transfer(ILI9341_SLPOUT);
|
SPI.transfer(ILI9341_SLPOUT);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) {
|
void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) {
|
||||||
|
|
@ -757,20 +809,19 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
while ((c = *text++)) {
|
while ((c = *text++)) {
|
||||||
const unsigned char * charpt=&font8x8[c][0];
|
const unsigned char * charpt=&font8x8[c][0];
|
||||||
|
|
||||||
setArea(x,y,x+7,y+(doublesize?15:7));
|
|
||||||
|
|
||||||
//SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(x,y,x+7,y+(doublesize?15:7));
|
||||||
//digitalWrite(_dc, 0);
|
//digitalWrite(_dc, 0);
|
||||||
//SPI.transfer(TFT_RAMWR);
|
//SPI.transfer(TFT_RAMWR);
|
||||||
|
//digitalWrite(_dc, 1);
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
for (int i=0;i<8;i++)
|
for (int i=0;i<8;i++)
|
||||||
{
|
{
|
||||||
unsigned char bits;
|
unsigned char bits;
|
||||||
if (doublesize) {
|
if (doublesize) {
|
||||||
bits = *charpt;
|
bits = *charpt;
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
if (bits&0x01) SPI.transfer16(fgcolor);
|
if (bits&0x01) SPI.transfer16(fgcolor);
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
bits = bits >> 1;
|
bits = bits >> 1;
|
||||||
|
|
@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
}
|
}
|
||||||
bits = *charpt++;
|
bits = *charpt++;
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
if (bits&0x01) SPI.transfer16(fgcolor);
|
if (bits&0x01) SPI.transfer16(fgcolor);
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
bits = bits >> 1;
|
bits = bits >> 1;
|
||||||
|
|
@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) {
|
|
||||||
setArea(x,y,x+w-1,y+h-1);
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
SPI.transfer(TFT_RAMWR);
|
|
||||||
int i;
|
|
||||||
for (i=0; i<(w*h); i++)
|
|
||||||
{
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
SPI.transfer16(color);
|
|
||||||
}
|
|
||||||
#ifdef ILI9341
|
|
||||||
digitalWrite(_dc, 0);
|
|
||||||
SPI.transfer(ILI9341_SLPOUT);
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
#endif
|
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************************************
|
/***********************************************************************************************
|
||||||
DMA functions
|
DMA functions
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
|
|
|
||||||
|
|
@ -21,18 +21,16 @@
|
||||||
#define B16(rgb) ((rgb<<3)&0xf8)
|
#define B16(rgb) ((rgb<<3)&0xf8)
|
||||||
|
|
||||||
|
|
||||||
#define TFT_HEIGHT 240
|
#ifdef LOHRES
|
||||||
|
|
||||||
#ifdef ILI9341
|
|
||||||
#define TFT_WIDTH 320
|
|
||||||
#define TFT_REALWIDTH 320
|
|
||||||
#define TFT_REALHEIGHT 240
|
|
||||||
#endif
|
|
||||||
#ifdef ST7789
|
|
||||||
#define TFT_WIDTH 240
|
#define TFT_WIDTH 240
|
||||||
#define TFT_REALWIDTH 240
|
#define TFT_REALWIDTH 240
|
||||||
#define TFT_REALHEIGHT 240
|
#else
|
||||||
|
#define TFT_WIDTH 320
|
||||||
|
#define TFT_REALWIDTH 320
|
||||||
#endif
|
#endif
|
||||||
|
#define TFT_HEIGHT 240
|
||||||
|
#define TFT_REALHEIGHT 240
|
||||||
|
|
||||||
|
|
||||||
#define LINES_PER_BLOCK 64
|
#define LINES_PER_BLOCK 64
|
||||||
#define NR_OF_BLOCK 4
|
#define NR_OF_BLOCK 4
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,7 @@
|
||||||
#include "platform_config.h"
|
#include "platform_config.h"
|
||||||
|
|
||||||
#ifdef TEENSYBOY
|
//#define ST7789 1
|
||||||
#define ST7789 1
|
//#define ILI9341 1
|
||||||
#define ROTATE_SCREEN 1
|
|
||||||
#else
|
|
||||||
#define ILI9341 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define TFT_LINEARINT 1
|
#define TFT_LINEARINT 1
|
||||||
#define LINEARINT_HACK 1
|
#define LINEARINT_HACK 1
|
||||||
|
|
|
||||||
|
|
@ -1373,7 +1373,7 @@ void emu_init(void)
|
||||||
|
|
||||||
|
|
||||||
emu_InitJoysticks();
|
emu_InitJoysticks();
|
||||||
#ifdef TEENSYBOY
|
#ifdef SWAP_JOYSTICK
|
||||||
joySwapped = true;
|
joySwapped = true;
|
||||||
#else
|
#else
|
||||||
joySwapped = false;
|
joySwapped = false;
|
||||||
|
|
|
||||||
|
|
@ -2,31 +2,17 @@
|
||||||
#define IOPINS_H
|
#define IOPINS_H
|
||||||
|
|
||||||
#include "platform_config.h"
|
#include "platform_config.h"
|
||||||
#include "tft_t_dma_config.h"
|
|
||||||
|
|
||||||
#ifndef OLD_LAYOUT
|
#ifndef OLD_LAYOUT
|
||||||
|
|
||||||
#ifdef ST7789
|
|
||||||
// ST7789
|
|
||||||
#define TFT_SCLK 13
|
#define TFT_SCLK 13
|
||||||
#define TFT_MOSI 11
|
#define TFT_MOSI 11
|
||||||
#define TFT_MISO 12
|
#define TFT_MISO 12
|
||||||
#define TFT_TOUCH_CS 255
|
#define TFT_TOUCH_CS 255
|
||||||
#define TFT_TOUCH_INT 255
|
#define TFT_TOUCH_INT 255
|
||||||
#define TFT_DC 9
|
#define TFT_DC 9
|
||||||
#define TFT_CS 255
|
#define TFT_CS 22 // 255 for LORES ST7789 (NO CS)
|
||||||
#define TFT_RST 23
|
#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V
|
||||||
#else
|
|
||||||
// ILI9341
|
|
||||||
#define TFT_SCLK 13
|
|
||||||
#define TFT_MOSI 11
|
|
||||||
#define TFT_MISO 12
|
|
||||||
#define TFT_TOUCH_CS 255 //38
|
|
||||||
#define TFT_TOUCH_INT 255 //37
|
|
||||||
#define TFT_DC 9
|
|
||||||
#define TFT_CS 23
|
|
||||||
#define TFT_RST 255
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// PSRAM
|
// PSRAM
|
||||||
#define PSRAM_CS 36
|
#define PSRAM_CS 36
|
||||||
|
|
@ -38,10 +24,10 @@
|
||||||
#define SD_SCLK 13
|
#define SD_SCLK 13
|
||||||
#define SD_MOSI 12
|
#define SD_MOSI 12
|
||||||
#define SD_MISO 11
|
#define SD_MISO 11
|
||||||
#ifdef TEENSYBOY
|
#ifdef EXTERNAL_SD
|
||||||
#define SD_CS BUILTIN_SDCARD
|
#define SD_CS 8
|
||||||
#else
|
#else
|
||||||
#define SD_CS 5
|
#define SD_CS BUILTIN_SDCARD
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// I2C keyboard
|
// I2C keyboard
|
||||||
|
|
@ -54,17 +40,15 @@
|
||||||
#define PIN_JOY2_BTN 17
|
#define PIN_JOY2_BTN 17
|
||||||
#define PIN_KEY_USER1 3 //34
|
#define PIN_KEY_USER1 3 //34
|
||||||
#define PIN_KEY_USER2 4 //35
|
#define PIN_KEY_USER2 4 //35
|
||||||
//#define PIN_KEY_USER3 255
|
//#define PIN_KEY_USER3 33
|
||||||
//#define PIN_KEY_USER4 255
|
//#define PIN_KEY_USER4 39
|
||||||
|
|
||||||
#ifdef TEENSYBOY
|
|
||||||
// Second joystick
|
// Second joystick
|
||||||
#define PIN_JOY1_BTN 2
|
#define PIN_JOY1_BTN 2
|
||||||
#define PIN_JOY1_1 14 // UP
|
#define PIN_JOY1_1 14 // UP
|
||||||
#define PIN_JOY1_2 7 // DOWN
|
#define PIN_JOY1_2 7 // DOWN
|
||||||
#define PIN_JOY1_3 6 // RIGHT
|
#define PIN_JOY1_3 6 // RIGHT
|
||||||
#define PIN_JOY1_4 5 // LEFT
|
#define PIN_JOY1_4 5 // LEFT
|
||||||
#endif
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
// OLD LAYOUT!!!!
|
// OLD LAYOUT!!!!
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,20 @@
|
||||||
#ifndef _PLATFORM_CONFIG_H_
|
#ifndef _PLATFORM_CONFIG_H_
|
||||||
#define _PLATFORM_CONFIG_H_
|
#define _PLATFORM_CONFIG_H_
|
||||||
|
|
||||||
//#define OLD_LAYOUT 1
|
//#define OLD_LAYOUT 1
|
||||||
//#define TEENSYBOY 1
|
|
||||||
|
|
||||||
//#define HAS_PSRAM 1
|
#define ILI9341 1
|
||||||
|
//#define ST7789 1
|
||||||
|
//#define SWAP_JOYSTICK 1
|
||||||
|
//#define LOHRES 1
|
||||||
|
//#define ROTATE_SCREEN 1
|
||||||
|
#define EXTERNAL_SD 1
|
||||||
|
|
||||||
//#define USE_SDFAT 1
|
#define HAS_PSRAM 1
|
||||||
//#define SD_FAT_TYPE 1
|
|
||||||
//#define USE_SDFS 1
|
//#define USE_SDFAT 1
|
||||||
//#define SDFSDEV "1:"
|
//#define SD_FAT_TYPE 1
|
||||||
|
//#define USE_SDFS 1
|
||||||
|
//#define SDFSDEV "1:"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = {
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static void dmaInterrupt() {
|
static void dmaInterrupt() {
|
||||||
dmatx.clearInterrupt();
|
dmatx.clearInterrupt();
|
||||||
curTransfer++;
|
curTransfer++;
|
||||||
|
|
@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t
|
||||||
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
||||||
int dx=0;
|
int dx=0;
|
||||||
int dy=0;
|
int dy=0;
|
||||||
|
|
||||||
#ifdef ST7789
|
#ifdef ST7789
|
||||||
|
if (TFT_REALWIDTH == TFT_REALHEIGHT)
|
||||||
|
{
|
||||||
#ifdef ROTATE_SCREEN
|
#ifdef ROTATE_SCREEN
|
||||||
if (!flipped) {
|
if (!flipped) {
|
||||||
dy += 80;
|
dy += 80;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if (flipped) {
|
if (flipped) {
|
||||||
dx += 80;
|
dx += 80;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_CASET);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(x1+dx);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(x2+dx);
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_PASET);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(y1+dy);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(y2+dy);
|
||||||
|
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_RAMWR);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
|
||||||
|
|
@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void TFT_T_DMA::begin(void) {
|
void TFT_T_DMA::begin(void) {
|
||||||
SPI.setMOSI(_mosi);
|
SPI.setMOSI(_mosi);
|
||||||
SPI.setMISO(_miso);
|
SPI.setMISO(_miso);
|
||||||
|
|
@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) {
|
||||||
SPI.begin();
|
SPI.begin();
|
||||||
|
|
||||||
// Initialize display
|
// Initialize display
|
||||||
if (_rst < 255) { // toggle RST low to reset
|
if (_rst != 0xff) {
|
||||||
pinMode(_rst, OUTPUT);
|
pinMode(_rst, OUTPUT);
|
||||||
digitalWrite(_rst, HIGH);
|
digitalWrite(_rst, HIGH);
|
||||||
delay(5);
|
delay(100);
|
||||||
digitalWrite(_rst, LOW);
|
digitalWrite(_rst, LOW);
|
||||||
delay(20);
|
delay(100);
|
||||||
digitalWrite(_rst, HIGH);
|
digitalWrite(_rst, HIGH);
|
||||||
delay(120);
|
delay(200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
const uint8_t *addr = init_commands;
|
const uint8_t *addr = init_commands;
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
|
@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) {
|
||||||
SPI.transfer(ILI9341_DISPON);
|
SPI.transfer(ILI9341_DISPON);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef ST7789
|
#ifdef ST7789
|
||||||
uint8_t numCommands, numArgs;
|
uint8_t numCommands, numArgs;
|
||||||
|
|
@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) {
|
||||||
if(ms) {
|
if(ms) {
|
||||||
ms = *addr++; // Read post-command delay time (ms)
|
ms = *addr++; // Read post-command delay time (ms)
|
||||||
if(ms == 255) ms = 500; // If 255, delay for 500 ms
|
if(ms == 255) ms = 500; // If 255, delay for 500 ms
|
||||||
SPI.endTransaction();
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
|
SPI.endTransaction();
|
||||||
delay(ms);
|
delay(ms);
|
||||||
//beginSPITransaction();
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
|
digitalWrite(_cs, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
digitalWrite(_cs, 1);
|
||||||
#endif
|
#endif
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
|
SPI.endTransaction();
|
||||||
|
|
||||||
cancelled = false;
|
cancelled = false;
|
||||||
|
|
||||||
#ifdef FLIP_SCREEN
|
#ifdef FLIP_SCREEN
|
||||||
flipscreen(true);
|
flipscreen(true);
|
||||||
#else
|
#else
|
||||||
flipscreen(false);
|
flipscreen(false);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef ST7789
|
||||||
|
if (TFT_REALWIDTH != TFT_REALHEIGHT)
|
||||||
|
{
|
||||||
|
flipscreen(true);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) {
|
||||||
#endif
|
#endif
|
||||||
dmatx = dmasettings[0];
|
dmatx = dmasettings[0];
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1);
|
||||||
digitalWrite(_dc, 0);
|
digitalWrite(_dc, 0);
|
||||||
SPI.transfer(TFT_RAMWR);
|
SPI.transfer(TFT_RAMWR);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
|
|
@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) {
|
||||||
No DMA functions
|
No DMA functions
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
SPI.transfer(TFT_RAMWR);
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
int i,j;
|
int i,j;
|
||||||
for (j=0; j<TFT_REALHEIGHT; j++)
|
for (j=0; j<TFT_REALHEIGHT; j++)
|
||||||
{
|
{
|
||||||
for (i=0; i<TFT_REALWIDTH; i++) {
|
for (i=0; i<TFT_REALWIDTH; i++) {
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(color);
|
SPI.transfer16(color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -643,24 +677,43 @@ void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) {
|
||||||
void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
|
||||||
setArea(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(x,y,x+w-1,y+h-1);
|
||||||
|
// digitalWrite(_dc, 0);
|
||||||
|
// SPI.transfer(TFT_RAMWR);
|
||||||
|
int i;
|
||||||
|
for (i=0; i<(w*h); i++)
|
||||||
|
{
|
||||||
|
//digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(color);
|
||||||
|
}
|
||||||
|
#ifdef ILI9341
|
||||||
digitalWrite(_dc, 0);
|
digitalWrite(_dc, 0);
|
||||||
SPI.transfer(TFT_RAMWR);
|
SPI.transfer(ILI9341_SLPOUT);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
#endif
|
||||||
|
digitalWrite(_cs, 1);
|
||||||
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
||||||
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
|
||||||
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
int i,j;
|
int i,j;
|
||||||
for (j=0; j<240; j++)
|
for (j=0; j<240; j++)
|
||||||
{
|
{
|
||||||
for (i=0; i<TFT_WIDTH; i++) {
|
for (i=0; i<TFT_WIDTH; i++) {
|
||||||
digitalWrite(_dc, 1);
|
// digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(*pcolors++);
|
SPI.transfer16(*pcolors++);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -670,9 +723,8 @@ void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) {
|
void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) {
|
||||||
|
|
@ -723,12 +775,12 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setArea(arx, ary, arx+arw-1, ary+arh-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(arx, ary, arx+arw-1, ary+arh-1);
|
||||||
SPI.transfer(TFT_RAMWR);
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
|
|
||||||
bitmap = bitmap + bmp_offy*w + bmp_offx;
|
bitmap = bitmap + bmp_offy*w + bmp_offx;
|
||||||
for (int row=0;row<arh; row++)
|
for (int row=0;row<arh; row++)
|
||||||
|
|
@ -737,7 +789,7 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
for (int col=0;col<arw; col++)
|
for (int col=0;col<arw; col++)
|
||||||
{
|
{
|
||||||
uint16_t color = *bmp_ptr++;
|
uint16_t color = *bmp_ptr++;
|
||||||
digitalWrite(_dc, 1);
|
// digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(color);
|
SPI.transfer16(color);
|
||||||
}
|
}
|
||||||
bitmap += w;
|
bitmap += w;
|
||||||
|
|
@ -747,9 +799,9 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
SPI.transfer(ILI9341_SLPOUT);
|
SPI.transfer(ILI9341_SLPOUT);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) {
|
void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) {
|
||||||
|
|
@ -757,20 +809,19 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
while ((c = *text++)) {
|
while ((c = *text++)) {
|
||||||
const unsigned char * charpt=&font8x8[c][0];
|
const unsigned char * charpt=&font8x8[c][0];
|
||||||
|
|
||||||
setArea(x,y,x+7,y+(doublesize?15:7));
|
|
||||||
|
|
||||||
//SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(x,y,x+7,y+(doublesize?15:7));
|
||||||
//digitalWrite(_dc, 0);
|
//digitalWrite(_dc, 0);
|
||||||
//SPI.transfer(TFT_RAMWR);
|
//SPI.transfer(TFT_RAMWR);
|
||||||
|
//digitalWrite(_dc, 1);
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
for (int i=0;i<8;i++)
|
for (int i=0;i<8;i++)
|
||||||
{
|
{
|
||||||
unsigned char bits;
|
unsigned char bits;
|
||||||
if (doublesize) {
|
if (doublesize) {
|
||||||
bits = *charpt;
|
bits = *charpt;
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
if (bits&0x01) SPI.transfer16(fgcolor);
|
if (bits&0x01) SPI.transfer16(fgcolor);
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
bits = bits >> 1;
|
bits = bits >> 1;
|
||||||
|
|
@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
}
|
}
|
||||||
bits = *charpt++;
|
bits = *charpt++;
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
if (bits&0x01) SPI.transfer16(fgcolor);
|
if (bits&0x01) SPI.transfer16(fgcolor);
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
bits = bits >> 1;
|
bits = bits >> 1;
|
||||||
|
|
@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) {
|
|
||||||
setArea(x,y,x+w-1,y+h-1);
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
SPI.transfer(TFT_RAMWR);
|
|
||||||
int i;
|
|
||||||
for (i=0; i<(w*h); i++)
|
|
||||||
{
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
SPI.transfer16(color);
|
|
||||||
}
|
|
||||||
#ifdef ILI9341
|
|
||||||
digitalWrite(_dc, 0);
|
|
||||||
SPI.transfer(ILI9341_SLPOUT);
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
#endif
|
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************************************
|
/***********************************************************************************************
|
||||||
DMA functions
|
DMA functions
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
|
|
|
||||||
|
|
@ -21,18 +21,15 @@
|
||||||
#define B16(rgb) ((rgb<<3)&0xf8)
|
#define B16(rgb) ((rgb<<3)&0xf8)
|
||||||
|
|
||||||
|
|
||||||
#define TFT_HEIGHT 240
|
#ifdef LOHRES
|
||||||
|
|
||||||
#ifdef ILI9341
|
|
||||||
#define TFT_WIDTH 256
|
|
||||||
#define TFT_REALWIDTH 320
|
|
||||||
#define TFT_REALHEIGHT 240
|
|
||||||
#endif
|
|
||||||
#ifdef ST7789
|
|
||||||
#define TFT_WIDTH 240
|
#define TFT_WIDTH 240
|
||||||
#define TFT_REALWIDTH 240
|
#define TFT_REALWIDTH 240
|
||||||
#define TFT_REALHEIGHT 240
|
#else
|
||||||
|
#define TFT_WIDTH 256
|
||||||
|
#define TFT_REALWIDTH 320
|
||||||
#endif
|
#endif
|
||||||
|
#define TFT_HEIGHT 240
|
||||||
|
#define TFT_REALHEIGHT 240
|
||||||
|
|
||||||
#define LINES_PER_BLOCK 64
|
#define LINES_PER_BLOCK 64
|
||||||
#define NR_OF_BLOCK 4
|
#define NR_OF_BLOCK 4
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,7 @@
|
||||||
#include "platform_config.h"
|
#include "platform_config.h"
|
||||||
|
|
||||||
#ifdef TEENSYBOY
|
//#define ST7789 1
|
||||||
#define ST7789 1
|
//#define ILI9341 1
|
||||||
#define ROTATE_SCREEN 1
|
|
||||||
#else
|
|
||||||
#define ILI9341 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define TFT_LINEARINT 1
|
#define TFT_LINEARINT 1
|
||||||
#define LINEARINT_HACK 1
|
#define LINEARINT_HACK 1
|
||||||
|
|
|
||||||
|
|
@ -1373,7 +1373,7 @@ void emu_init(void)
|
||||||
|
|
||||||
|
|
||||||
emu_InitJoysticks();
|
emu_InitJoysticks();
|
||||||
#ifdef TEENSYBOY
|
#ifdef SWAP_JOYSTICK
|
||||||
joySwapped = true;
|
joySwapped = true;
|
||||||
#else
|
#else
|
||||||
joySwapped = false;
|
joySwapped = false;
|
||||||
|
|
|
||||||
|
|
@ -2,31 +2,17 @@
|
||||||
#define IOPINS_H
|
#define IOPINS_H
|
||||||
|
|
||||||
#include "platform_config.h"
|
#include "platform_config.h"
|
||||||
#include "tft_t_dma_config.h"
|
|
||||||
|
|
||||||
#ifndef OLD_LAYOUT
|
#ifndef OLD_LAYOUT
|
||||||
|
|
||||||
#ifdef ST7789
|
|
||||||
// ST7789
|
|
||||||
#define TFT_SCLK 13
|
#define TFT_SCLK 13
|
||||||
#define TFT_MOSI 11
|
#define TFT_MOSI 11
|
||||||
#define TFT_MISO 12
|
#define TFT_MISO 12
|
||||||
#define TFT_TOUCH_CS 255
|
#define TFT_TOUCH_CS 255
|
||||||
#define TFT_TOUCH_INT 255
|
#define TFT_TOUCH_INT 255
|
||||||
#define TFT_DC 9
|
#define TFT_DC 9
|
||||||
#define TFT_CS 255
|
#define TFT_CS 22 // 255 for LORES ST7789 (NO CS)
|
||||||
#define TFT_RST 23
|
#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V
|
||||||
#else
|
|
||||||
// ILI9341
|
|
||||||
#define TFT_SCLK 13
|
|
||||||
#define TFT_MOSI 11
|
|
||||||
#define TFT_MISO 12
|
|
||||||
#define TFT_TOUCH_CS 255 //38
|
|
||||||
#define TFT_TOUCH_INT 255 //37
|
|
||||||
#define TFT_DC 9
|
|
||||||
#define TFT_CS 23
|
|
||||||
#define TFT_RST 255
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// PSRAM
|
// PSRAM
|
||||||
#define PSRAM_CS 36
|
#define PSRAM_CS 36
|
||||||
|
|
@ -38,10 +24,10 @@
|
||||||
#define SD_SCLK 13
|
#define SD_SCLK 13
|
||||||
#define SD_MOSI 12
|
#define SD_MOSI 12
|
||||||
#define SD_MISO 11
|
#define SD_MISO 11
|
||||||
#ifdef TEENSYBOY
|
#ifdef EXTERNAL_SD
|
||||||
#define SD_CS BUILTIN_SDCARD
|
#define SD_CS 8
|
||||||
#else
|
#else
|
||||||
#define SD_CS 5
|
#define SD_CS BUILTIN_SDCARD
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// I2C keyboard
|
// I2C keyboard
|
||||||
|
|
@ -54,17 +40,15 @@
|
||||||
#define PIN_JOY2_BTN 17
|
#define PIN_JOY2_BTN 17
|
||||||
#define PIN_KEY_USER1 3 //34
|
#define PIN_KEY_USER1 3 //34
|
||||||
#define PIN_KEY_USER2 4 //35
|
#define PIN_KEY_USER2 4 //35
|
||||||
//#define PIN_KEY_USER3 255
|
//#define PIN_KEY_USER3 33
|
||||||
//#define PIN_KEY_USER4 255
|
//#define PIN_KEY_USER4 39
|
||||||
|
|
||||||
#ifdef TEENSYBOY
|
|
||||||
// Second joystick
|
// Second joystick
|
||||||
#define PIN_JOY1_BTN 2
|
#define PIN_JOY1_BTN 2
|
||||||
#define PIN_JOY1_1 14 // UP
|
#define PIN_JOY1_1 14 // UP
|
||||||
#define PIN_JOY1_2 7 // DOWN
|
#define PIN_JOY1_2 7 // DOWN
|
||||||
#define PIN_JOY1_3 6 // RIGHT
|
#define PIN_JOY1_3 6 // RIGHT
|
||||||
#define PIN_JOY1_4 5 // LEFT
|
#define PIN_JOY1_4 5 // LEFT
|
||||||
#endif
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
// OLD LAYOUT!!!!
|
// OLD LAYOUT!!!!
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,20 @@
|
||||||
#ifndef _PLATFORM_CONFIG_H_
|
#ifndef _PLATFORM_CONFIG_H_
|
||||||
#define _PLATFORM_CONFIG_H_
|
#define _PLATFORM_CONFIG_H_
|
||||||
|
|
||||||
//#define OLD_LAYOUT 1
|
//#define OLD_LAYOUT 1
|
||||||
//#define TEENSYBOY 1
|
|
||||||
|
|
||||||
//#define HAS_PSRAM 1
|
#define ILI9341 1
|
||||||
|
//#define ST7789 1
|
||||||
|
//#define SWAP_JOYSTICK 1
|
||||||
|
//#define LOHRES 1
|
||||||
|
//#define ROTATE_SCREEN 1
|
||||||
|
#define EXTERNAL_SD 1
|
||||||
|
|
||||||
//#define USE_SDFAT 1
|
#define HAS_PSRAM 1
|
||||||
//#define SD_FAT_TYPE 1
|
|
||||||
//#define USE_SDFS 1
|
//#define USE_SDFAT 1
|
||||||
//#define SDFSDEV "1:"
|
//#define SD_FAT_TYPE 1
|
||||||
|
//#define USE_SDFS 1
|
||||||
|
//#define SDFSDEV "1:"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = {
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static void dmaInterrupt() {
|
static void dmaInterrupt() {
|
||||||
dmatx.clearInterrupt();
|
dmatx.clearInterrupt();
|
||||||
curTransfer++;
|
curTransfer++;
|
||||||
|
|
@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t
|
||||||
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
||||||
int dx=0;
|
int dx=0;
|
||||||
int dy=0;
|
int dy=0;
|
||||||
|
|
||||||
#ifdef ST7789
|
#ifdef ST7789
|
||||||
|
if (TFT_REALWIDTH == TFT_REALHEIGHT)
|
||||||
|
{
|
||||||
#ifdef ROTATE_SCREEN
|
#ifdef ROTATE_SCREEN
|
||||||
if (!flipped) {
|
if (!flipped) {
|
||||||
dy += 80;
|
dy += 80;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if (flipped) {
|
if (flipped) {
|
||||||
dx += 80;
|
dx += 80;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_CASET);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(x1+dx);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(x2+dx);
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_PASET);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(y1+dy);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(y2+dy);
|
||||||
|
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_RAMWR);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
|
||||||
|
|
@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void TFT_T_DMA::begin(void) {
|
void TFT_T_DMA::begin(void) {
|
||||||
SPI.setMOSI(_mosi);
|
SPI.setMOSI(_mosi);
|
||||||
SPI.setMISO(_miso);
|
SPI.setMISO(_miso);
|
||||||
|
|
@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) {
|
||||||
SPI.begin();
|
SPI.begin();
|
||||||
|
|
||||||
// Initialize display
|
// Initialize display
|
||||||
if (_rst < 255) { // toggle RST low to reset
|
if (_rst != 0xff) {
|
||||||
pinMode(_rst, OUTPUT);
|
pinMode(_rst, OUTPUT);
|
||||||
digitalWrite(_rst, HIGH);
|
digitalWrite(_rst, HIGH);
|
||||||
delay(5);
|
delay(100);
|
||||||
digitalWrite(_rst, LOW);
|
digitalWrite(_rst, LOW);
|
||||||
delay(20);
|
delay(100);
|
||||||
digitalWrite(_rst, HIGH);
|
digitalWrite(_rst, HIGH);
|
||||||
delay(120);
|
delay(200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
const uint8_t *addr = init_commands;
|
const uint8_t *addr = init_commands;
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
|
@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) {
|
||||||
SPI.transfer(ILI9341_DISPON);
|
SPI.transfer(ILI9341_DISPON);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef ST7789
|
#ifdef ST7789
|
||||||
uint8_t numCommands, numArgs;
|
uint8_t numCommands, numArgs;
|
||||||
|
|
@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) {
|
||||||
if(ms) {
|
if(ms) {
|
||||||
ms = *addr++; // Read post-command delay time (ms)
|
ms = *addr++; // Read post-command delay time (ms)
|
||||||
if(ms == 255) ms = 500; // If 255, delay for 500 ms
|
if(ms == 255) ms = 500; // If 255, delay for 500 ms
|
||||||
SPI.endTransaction();
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
|
SPI.endTransaction();
|
||||||
delay(ms);
|
delay(ms);
|
||||||
//beginSPITransaction();
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
|
digitalWrite(_cs, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
digitalWrite(_cs, 1);
|
||||||
#endif
|
#endif
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
|
SPI.endTransaction();
|
||||||
|
|
||||||
cancelled = false;
|
cancelled = false;
|
||||||
|
|
||||||
#ifdef FLIP_SCREEN
|
#ifdef FLIP_SCREEN
|
||||||
flipscreen(true);
|
flipscreen(true);
|
||||||
#else
|
#else
|
||||||
flipscreen(false);
|
flipscreen(false);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef ST7789
|
||||||
|
if (TFT_REALWIDTH != TFT_REALHEIGHT)
|
||||||
|
{
|
||||||
|
flipscreen(true);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) {
|
||||||
#endif
|
#endif
|
||||||
dmatx = dmasettings[0];
|
dmatx = dmasettings[0];
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1);
|
||||||
digitalWrite(_dc, 0);
|
digitalWrite(_dc, 0);
|
||||||
SPI.transfer(TFT_RAMWR);
|
SPI.transfer(TFT_RAMWR);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
|
|
@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) {
|
||||||
No DMA functions
|
No DMA functions
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
SPI.transfer(TFT_RAMWR);
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
int i,j;
|
int i,j;
|
||||||
for (j=0; j<TFT_REALHEIGHT; j++)
|
for (j=0; j<TFT_REALHEIGHT; j++)
|
||||||
{
|
{
|
||||||
for (i=0; i<TFT_REALWIDTH; i++) {
|
for (i=0; i<TFT_REALWIDTH; i++) {
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(color);
|
SPI.transfer16(color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -643,24 +677,43 @@ void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) {
|
||||||
void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
|
||||||
setArea(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(x,y,x+w-1,y+h-1);
|
||||||
|
// digitalWrite(_dc, 0);
|
||||||
|
// SPI.transfer(TFT_RAMWR);
|
||||||
|
int i;
|
||||||
|
for (i=0; i<(w*h); i++)
|
||||||
|
{
|
||||||
|
//digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(color);
|
||||||
|
}
|
||||||
|
#ifdef ILI9341
|
||||||
digitalWrite(_dc, 0);
|
digitalWrite(_dc, 0);
|
||||||
SPI.transfer(TFT_RAMWR);
|
SPI.transfer(ILI9341_SLPOUT);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
#endif
|
||||||
|
digitalWrite(_cs, 1);
|
||||||
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
||||||
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
|
||||||
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
int i,j;
|
int i,j;
|
||||||
for (j=0; j<240; j++)
|
for (j=0; j<240; j++)
|
||||||
{
|
{
|
||||||
for (i=0; i<TFT_WIDTH; i++) {
|
for (i=0; i<TFT_WIDTH; i++) {
|
||||||
digitalWrite(_dc, 1);
|
// digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(*pcolors++);
|
SPI.transfer16(*pcolors++);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -670,9 +723,8 @@ void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) {
|
void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) {
|
||||||
|
|
@ -723,12 +775,12 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setArea(arx, ary, arx+arw-1, ary+arh-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(arx, ary, arx+arw-1, ary+arh-1);
|
||||||
SPI.transfer(TFT_RAMWR);
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
|
|
||||||
bitmap = bitmap + bmp_offy*w + bmp_offx;
|
bitmap = bitmap + bmp_offy*w + bmp_offx;
|
||||||
for (int row=0;row<arh; row++)
|
for (int row=0;row<arh; row++)
|
||||||
|
|
@ -737,7 +789,7 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
for (int col=0;col<arw; col++)
|
for (int col=0;col<arw; col++)
|
||||||
{
|
{
|
||||||
uint16_t color = *bmp_ptr++;
|
uint16_t color = *bmp_ptr++;
|
||||||
digitalWrite(_dc, 1);
|
// digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(color);
|
SPI.transfer16(color);
|
||||||
}
|
}
|
||||||
bitmap += w;
|
bitmap += w;
|
||||||
|
|
@ -747,9 +799,9 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
SPI.transfer(ILI9341_SLPOUT);
|
SPI.transfer(ILI9341_SLPOUT);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) {
|
void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) {
|
||||||
|
|
@ -757,20 +809,19 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
while ((c = *text++)) {
|
while ((c = *text++)) {
|
||||||
const unsigned char * charpt=&font8x8[c][0];
|
const unsigned char * charpt=&font8x8[c][0];
|
||||||
|
|
||||||
setArea(x,y,x+7,y+(doublesize?15:7));
|
|
||||||
|
|
||||||
//SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(x,y,x+7,y+(doublesize?15:7));
|
||||||
//digitalWrite(_dc, 0);
|
//digitalWrite(_dc, 0);
|
||||||
//SPI.transfer(TFT_RAMWR);
|
//SPI.transfer(TFT_RAMWR);
|
||||||
|
//digitalWrite(_dc, 1);
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
for (int i=0;i<8;i++)
|
for (int i=0;i<8;i++)
|
||||||
{
|
{
|
||||||
unsigned char bits;
|
unsigned char bits;
|
||||||
if (doublesize) {
|
if (doublesize) {
|
||||||
bits = *charpt;
|
bits = *charpt;
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
if (bits&0x01) SPI.transfer16(fgcolor);
|
if (bits&0x01) SPI.transfer16(fgcolor);
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
bits = bits >> 1;
|
bits = bits >> 1;
|
||||||
|
|
@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
}
|
}
|
||||||
bits = *charpt++;
|
bits = *charpt++;
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
if (bits&0x01) SPI.transfer16(fgcolor);
|
if (bits&0x01) SPI.transfer16(fgcolor);
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
bits = bits >> 1;
|
bits = bits >> 1;
|
||||||
|
|
@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) {
|
|
||||||
setArea(x,y,x+w-1,y+h-1);
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
SPI.transfer(TFT_RAMWR);
|
|
||||||
int i;
|
|
||||||
for (i=0; i<(w*h); i++)
|
|
||||||
{
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
SPI.transfer16(color);
|
|
||||||
}
|
|
||||||
#ifdef ILI9341
|
|
||||||
digitalWrite(_dc, 0);
|
|
||||||
SPI.transfer(ILI9341_SLPOUT);
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
#endif
|
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************************************
|
/***********************************************************************************************
|
||||||
DMA functions
|
DMA functions
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
|
|
|
||||||
|
|
@ -21,18 +21,16 @@
|
||||||
#define B16(rgb) ((rgb<<3)&0xf8)
|
#define B16(rgb) ((rgb<<3)&0xf8)
|
||||||
|
|
||||||
|
|
||||||
#define TFT_HEIGHT 240
|
#ifdef LOHRES
|
||||||
|
|
||||||
#ifdef ILI9341
|
|
||||||
#define TFT_WIDTH 320
|
|
||||||
#define TFT_REALWIDTH 320
|
|
||||||
#define TFT_REALHEIGHT 240
|
|
||||||
#endif
|
|
||||||
#ifdef ST7789
|
|
||||||
#define TFT_WIDTH 240
|
#define TFT_WIDTH 240
|
||||||
#define TFT_REALWIDTH 240
|
#define TFT_REALWIDTH 240
|
||||||
#define TFT_REALHEIGHT 240
|
#else
|
||||||
|
#define TFT_WIDTH 320
|
||||||
|
#define TFT_REALWIDTH 320
|
||||||
#endif
|
#endif
|
||||||
|
#define TFT_HEIGHT 240
|
||||||
|
#define TFT_REALHEIGHT 240
|
||||||
|
|
||||||
|
|
||||||
#define LINES_PER_BLOCK 64
|
#define LINES_PER_BLOCK 64
|
||||||
#define NR_OF_BLOCK 4
|
#define NR_OF_BLOCK 4
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,7 @@
|
||||||
#include "platform_config.h"
|
#include "platform_config.h"
|
||||||
|
|
||||||
#ifdef TEENSYBOY
|
//#define ST7789 1
|
||||||
#define ST7789 1
|
//#define ILI9341 1
|
||||||
#define ROTATE_SCREEN 1
|
|
||||||
#else
|
|
||||||
#define ILI9341 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define TFT_LINEARINT 1
|
#define TFT_LINEARINT 1
|
||||||
#define LINEARINT_HACK 1
|
#define LINEARINT_HACK 1
|
||||||
|
|
|
||||||
|
|
@ -1373,7 +1373,7 @@ void emu_init(void)
|
||||||
|
|
||||||
|
|
||||||
emu_InitJoysticks();
|
emu_InitJoysticks();
|
||||||
#ifdef TEENSYBOY
|
#ifdef SWAP_JOYSTICK
|
||||||
joySwapped = true;
|
joySwapped = true;
|
||||||
#else
|
#else
|
||||||
joySwapped = false;
|
joySwapped = false;
|
||||||
|
|
|
||||||
|
|
@ -2,31 +2,17 @@
|
||||||
#define IOPINS_H
|
#define IOPINS_H
|
||||||
|
|
||||||
#include "platform_config.h"
|
#include "platform_config.h"
|
||||||
#include "tft_t_dma_config.h"
|
|
||||||
|
|
||||||
#ifndef OLD_LAYOUT
|
#ifndef OLD_LAYOUT
|
||||||
|
|
||||||
#ifdef ST7789
|
|
||||||
// ST7789
|
|
||||||
#define TFT_SCLK 13
|
#define TFT_SCLK 13
|
||||||
#define TFT_MOSI 11
|
#define TFT_MOSI 11
|
||||||
#define TFT_MISO 12
|
#define TFT_MISO 12
|
||||||
#define TFT_TOUCH_CS 255
|
#define TFT_TOUCH_CS 255
|
||||||
#define TFT_TOUCH_INT 255
|
#define TFT_TOUCH_INT 255
|
||||||
#define TFT_DC 9
|
#define TFT_DC 9
|
||||||
#define TFT_CS 255
|
#define TFT_CS 22 // 255 for LORES ST7789 (NO CS)
|
||||||
#define TFT_RST 23
|
#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V
|
||||||
#else
|
|
||||||
// ILI9341
|
|
||||||
#define TFT_SCLK 13
|
|
||||||
#define TFT_MOSI 11
|
|
||||||
#define TFT_MISO 12
|
|
||||||
#define TFT_TOUCH_CS 255 //38
|
|
||||||
#define TFT_TOUCH_INT 255 //37
|
|
||||||
#define TFT_DC 9
|
|
||||||
#define TFT_CS 23
|
|
||||||
#define TFT_RST 255
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// PSRAM
|
// PSRAM
|
||||||
#define PSRAM_CS 36
|
#define PSRAM_CS 36
|
||||||
|
|
@ -38,10 +24,10 @@
|
||||||
#define SD_SCLK 13
|
#define SD_SCLK 13
|
||||||
#define SD_MOSI 12
|
#define SD_MOSI 12
|
||||||
#define SD_MISO 11
|
#define SD_MISO 11
|
||||||
#ifdef TEENSYBOY
|
#ifdef EXTERNAL_SD
|
||||||
#define SD_CS BUILTIN_SDCARD
|
#define SD_CS 8
|
||||||
#else
|
#else
|
||||||
#define SD_CS 5
|
#define SD_CS BUILTIN_SDCARD
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// I2C keyboard
|
// I2C keyboard
|
||||||
|
|
@ -54,17 +40,15 @@
|
||||||
#define PIN_JOY2_BTN 17
|
#define PIN_JOY2_BTN 17
|
||||||
#define PIN_KEY_USER1 3 //34
|
#define PIN_KEY_USER1 3 //34
|
||||||
#define PIN_KEY_USER2 4 //35
|
#define PIN_KEY_USER2 4 //35
|
||||||
//#define PIN_KEY_USER3 255
|
//#define PIN_KEY_USER3 33
|
||||||
//#define PIN_KEY_USER4 255
|
//#define PIN_KEY_USER4 39
|
||||||
|
|
||||||
#ifdef TEENSYBOY
|
|
||||||
// Second joystick
|
// Second joystick
|
||||||
#define PIN_JOY1_BTN 2
|
#define PIN_JOY1_BTN 2
|
||||||
#define PIN_JOY1_1 14 // UP
|
#define PIN_JOY1_1 14 // UP
|
||||||
#define PIN_JOY1_2 7 // DOWN
|
#define PIN_JOY1_2 7 // DOWN
|
||||||
#define PIN_JOY1_3 6 // RIGHT
|
#define PIN_JOY1_3 6 // RIGHT
|
||||||
#define PIN_JOY1_4 5 // LEFT
|
#define PIN_JOY1_4 5 // LEFT
|
||||||
#endif
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
// OLD LAYOUT!!!!
|
// OLD LAYOUT!!!!
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,20 @@
|
||||||
#ifndef _PLATFORM_CONFIG_H_
|
#ifndef _PLATFORM_CONFIG_H_
|
||||||
#define _PLATFORM_CONFIG_H_
|
#define _PLATFORM_CONFIG_H_
|
||||||
|
|
||||||
//#define OLD_LAYOUT 1
|
//#define OLD_LAYOUT 1
|
||||||
//#define TEENSYBOY 1
|
|
||||||
|
|
||||||
#define HAS_PSRAM 1
|
#define ILI9341 1
|
||||||
|
//#define ST7789 1
|
||||||
|
//#define SWAP_JOYSTICK 1
|
||||||
|
//#define LOHRES 1
|
||||||
|
//#define ROTATE_SCREEN 1
|
||||||
|
#define EXTERNAL_SD 1
|
||||||
|
|
||||||
//#define USE_SDFAT 1
|
#define HAS_PSRAM 1
|
||||||
//#define SD_FAT_TYPE 1
|
|
||||||
//#define USE_SDFS 1
|
//#define USE_SDFAT 1
|
||||||
//#define SDFSDEV "1:"
|
//#define SD_FAT_TYPE 1
|
||||||
|
//#define USE_SDFS 1
|
||||||
|
//#define SDFSDEV "1:"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = {
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static void dmaInterrupt() {
|
static void dmaInterrupt() {
|
||||||
dmatx.clearInterrupt();
|
dmatx.clearInterrupt();
|
||||||
curTransfer++;
|
curTransfer++;
|
||||||
|
|
@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t
|
||||||
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
||||||
int dx=0;
|
int dx=0;
|
||||||
int dy=0;
|
int dy=0;
|
||||||
|
|
||||||
#ifdef ST7789
|
#ifdef ST7789
|
||||||
|
if (TFT_REALWIDTH == TFT_REALHEIGHT)
|
||||||
|
{
|
||||||
#ifdef ROTATE_SCREEN
|
#ifdef ROTATE_SCREEN
|
||||||
if (!flipped) {
|
if (!flipped) {
|
||||||
dy += 80;
|
dy += 80;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if (flipped) {
|
if (flipped) {
|
||||||
dx += 80;
|
dx += 80;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_CASET);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(x1+dx);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(x2+dx);
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_PASET);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(y1+dy);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(y2+dy);
|
||||||
|
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_RAMWR);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
|
||||||
|
|
@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void TFT_T_DMA::begin(void) {
|
void TFT_T_DMA::begin(void) {
|
||||||
SPI.setMOSI(_mosi);
|
SPI.setMOSI(_mosi);
|
||||||
SPI.setMISO(_miso);
|
SPI.setMISO(_miso);
|
||||||
|
|
@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) {
|
||||||
SPI.begin();
|
SPI.begin();
|
||||||
|
|
||||||
// Initialize display
|
// Initialize display
|
||||||
if (_rst < 255) { // toggle RST low to reset
|
if (_rst != 0xff) {
|
||||||
pinMode(_rst, OUTPUT);
|
pinMode(_rst, OUTPUT);
|
||||||
digitalWrite(_rst, HIGH);
|
digitalWrite(_rst, HIGH);
|
||||||
delay(5);
|
delay(100);
|
||||||
digitalWrite(_rst, LOW);
|
digitalWrite(_rst, LOW);
|
||||||
delay(20);
|
delay(100);
|
||||||
digitalWrite(_rst, HIGH);
|
digitalWrite(_rst, HIGH);
|
||||||
delay(120);
|
delay(200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
const uint8_t *addr = init_commands;
|
const uint8_t *addr = init_commands;
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
|
@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) {
|
||||||
SPI.transfer(ILI9341_DISPON);
|
SPI.transfer(ILI9341_DISPON);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef ST7789
|
#ifdef ST7789
|
||||||
uint8_t numCommands, numArgs;
|
uint8_t numCommands, numArgs;
|
||||||
|
|
@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) {
|
||||||
if(ms) {
|
if(ms) {
|
||||||
ms = *addr++; // Read post-command delay time (ms)
|
ms = *addr++; // Read post-command delay time (ms)
|
||||||
if(ms == 255) ms = 500; // If 255, delay for 500 ms
|
if(ms == 255) ms = 500; // If 255, delay for 500 ms
|
||||||
SPI.endTransaction();
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
|
SPI.endTransaction();
|
||||||
delay(ms);
|
delay(ms);
|
||||||
//beginSPITransaction();
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
|
digitalWrite(_cs, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
digitalWrite(_cs, 1);
|
||||||
#endif
|
#endif
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
|
SPI.endTransaction();
|
||||||
|
|
||||||
cancelled = false;
|
cancelled = false;
|
||||||
|
|
||||||
#ifdef FLIP_SCREEN
|
#ifdef FLIP_SCREEN
|
||||||
flipscreen(true);
|
flipscreen(true);
|
||||||
#else
|
#else
|
||||||
flipscreen(false);
|
flipscreen(false);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef ST7789
|
||||||
|
if (TFT_REALWIDTH != TFT_REALHEIGHT)
|
||||||
|
{
|
||||||
|
flipscreen(true);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) {
|
||||||
#endif
|
#endif
|
||||||
dmatx = dmasettings[0];
|
dmatx = dmasettings[0];
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1);
|
||||||
digitalWrite(_dc, 0);
|
digitalWrite(_dc, 0);
|
||||||
SPI.transfer(TFT_RAMWR);
|
SPI.transfer(TFT_RAMWR);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
|
|
@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) {
|
||||||
No DMA functions
|
No DMA functions
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
SPI.transfer(TFT_RAMWR);
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
int i,j;
|
int i,j;
|
||||||
for (j=0; j<TFT_REALHEIGHT; j++)
|
for (j=0; j<TFT_REALHEIGHT; j++)
|
||||||
{
|
{
|
||||||
for (i=0; i<TFT_REALWIDTH; i++) {
|
for (i=0; i<TFT_REALWIDTH; i++) {
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(color);
|
SPI.transfer16(color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -643,24 +677,43 @@ void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) {
|
||||||
void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
|
||||||
setArea(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(x,y,x+w-1,y+h-1);
|
||||||
|
// digitalWrite(_dc, 0);
|
||||||
|
// SPI.transfer(TFT_RAMWR);
|
||||||
|
int i;
|
||||||
|
for (i=0; i<(w*h); i++)
|
||||||
|
{
|
||||||
|
//digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(color);
|
||||||
|
}
|
||||||
|
#ifdef ILI9341
|
||||||
digitalWrite(_dc, 0);
|
digitalWrite(_dc, 0);
|
||||||
SPI.transfer(TFT_RAMWR);
|
SPI.transfer(ILI9341_SLPOUT);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
#endif
|
||||||
|
digitalWrite(_cs, 1);
|
||||||
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
||||||
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
|
||||||
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
int i,j;
|
int i,j;
|
||||||
for (j=0; j<240; j++)
|
for (j=0; j<240; j++)
|
||||||
{
|
{
|
||||||
for (i=0; i<TFT_WIDTH; i++) {
|
for (i=0; i<TFT_WIDTH; i++) {
|
||||||
digitalWrite(_dc, 1);
|
// digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(*pcolors++);
|
SPI.transfer16(*pcolors++);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -670,9 +723,8 @@ void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) {
|
void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) {
|
||||||
|
|
@ -723,12 +775,12 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setArea(arx, ary, arx+arw-1, ary+arh-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(arx, ary, arx+arw-1, ary+arh-1);
|
||||||
SPI.transfer(TFT_RAMWR);
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
|
|
||||||
bitmap = bitmap + bmp_offy*w + bmp_offx;
|
bitmap = bitmap + bmp_offy*w + bmp_offx;
|
||||||
for (int row=0;row<arh; row++)
|
for (int row=0;row<arh; row++)
|
||||||
|
|
@ -737,7 +789,7 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
for (int col=0;col<arw; col++)
|
for (int col=0;col<arw; col++)
|
||||||
{
|
{
|
||||||
uint16_t color = *bmp_ptr++;
|
uint16_t color = *bmp_ptr++;
|
||||||
digitalWrite(_dc, 1);
|
// digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(color);
|
SPI.transfer16(color);
|
||||||
}
|
}
|
||||||
bitmap += w;
|
bitmap += w;
|
||||||
|
|
@ -747,9 +799,9 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
SPI.transfer(ILI9341_SLPOUT);
|
SPI.transfer(ILI9341_SLPOUT);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) {
|
void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) {
|
||||||
|
|
@ -757,20 +809,19 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
while ((c = *text++)) {
|
while ((c = *text++)) {
|
||||||
const unsigned char * charpt=&font8x8[c][0];
|
const unsigned char * charpt=&font8x8[c][0];
|
||||||
|
|
||||||
setArea(x,y,x+7,y+(doublesize?15:7));
|
|
||||||
|
|
||||||
//SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(x,y,x+7,y+(doublesize?15:7));
|
||||||
//digitalWrite(_dc, 0);
|
//digitalWrite(_dc, 0);
|
||||||
//SPI.transfer(TFT_RAMWR);
|
//SPI.transfer(TFT_RAMWR);
|
||||||
|
//digitalWrite(_dc, 1);
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
for (int i=0;i<8;i++)
|
for (int i=0;i<8;i++)
|
||||||
{
|
{
|
||||||
unsigned char bits;
|
unsigned char bits;
|
||||||
if (doublesize) {
|
if (doublesize) {
|
||||||
bits = *charpt;
|
bits = *charpt;
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
if (bits&0x01) SPI.transfer16(fgcolor);
|
if (bits&0x01) SPI.transfer16(fgcolor);
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
bits = bits >> 1;
|
bits = bits >> 1;
|
||||||
|
|
@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
}
|
}
|
||||||
bits = *charpt++;
|
bits = *charpt++;
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
if (bits&0x01) SPI.transfer16(fgcolor);
|
if (bits&0x01) SPI.transfer16(fgcolor);
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
bits = bits >> 1;
|
bits = bits >> 1;
|
||||||
|
|
@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) {
|
|
||||||
setArea(x,y,x+w-1,y+h-1);
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
SPI.transfer(TFT_RAMWR);
|
|
||||||
int i;
|
|
||||||
for (i=0; i<(w*h); i++)
|
|
||||||
{
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
SPI.transfer16(color);
|
|
||||||
}
|
|
||||||
#ifdef ILI9341
|
|
||||||
digitalWrite(_dc, 0);
|
|
||||||
SPI.transfer(ILI9341_SLPOUT);
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
#endif
|
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************************************
|
/***********************************************************************************************
|
||||||
DMA functions
|
DMA functions
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
|
|
|
||||||
|
|
@ -22,18 +22,15 @@
|
||||||
|
|
||||||
#define PAL_COLOR_MASK 0xff
|
#define PAL_COLOR_MASK 0xff
|
||||||
|
|
||||||
#define TFT_HEIGHT 240
|
#ifdef LOHRES
|
||||||
|
|
||||||
#ifdef ILI9341
|
|
||||||
#define TFT_WIDTH 256
|
|
||||||
#define TFT_REALWIDTH 320
|
|
||||||
#define TFT_REALHEIGHT 240
|
|
||||||
#endif
|
|
||||||
#ifdef ST7789
|
|
||||||
#define TFT_WIDTH 240
|
#define TFT_WIDTH 240
|
||||||
#define TFT_REALWIDTH 240
|
#define TFT_REALWIDTH 240
|
||||||
#define TFT_REALHEIGHT 240
|
#else
|
||||||
|
#define TFT_WIDTH 256
|
||||||
|
#define TFT_REALWIDTH 320
|
||||||
#endif
|
#endif
|
||||||
|
#define TFT_HEIGHT 240
|
||||||
|
#define TFT_REALHEIGHT 240
|
||||||
|
|
||||||
#define LINES_PER_BLOCK 64
|
#define LINES_PER_BLOCK 64
|
||||||
#define NR_OF_BLOCK 4
|
#define NR_OF_BLOCK 4
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,7 @@
|
||||||
#include "platform_config.h"
|
#include "platform_config.h"
|
||||||
|
|
||||||
#ifdef TEENSYBOY
|
//#define ST7789 1
|
||||||
#define ST7789 1
|
//#define ILI9341 1
|
||||||
#define ROTATE_SCREEN 1
|
|
||||||
#else
|
|
||||||
#define ILI9341 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define TFT_LINEARINT 1
|
#define TFT_LINEARINT 1
|
||||||
#define LINEARINT_HACK 1
|
#define LINEARINT_HACK 1
|
||||||
|
|
|
||||||
|
|
@ -1373,7 +1373,7 @@ void emu_init(void)
|
||||||
|
|
||||||
|
|
||||||
emu_InitJoysticks();
|
emu_InitJoysticks();
|
||||||
#ifdef TEENSYBOY
|
#ifdef SWAP_JOYSTICK
|
||||||
joySwapped = true;
|
joySwapped = true;
|
||||||
#else
|
#else
|
||||||
joySwapped = false;
|
joySwapped = false;
|
||||||
|
|
|
||||||
|
|
@ -2,31 +2,17 @@
|
||||||
#define IOPINS_H
|
#define IOPINS_H
|
||||||
|
|
||||||
#include "platform_config.h"
|
#include "platform_config.h"
|
||||||
#include "tft_t_dma_config.h"
|
|
||||||
|
|
||||||
#ifndef OLD_LAYOUT
|
#ifndef OLD_LAYOUT
|
||||||
|
|
||||||
#ifdef ST7789
|
|
||||||
// ST7789
|
|
||||||
#define TFT_SCLK 13
|
#define TFT_SCLK 13
|
||||||
#define TFT_MOSI 11
|
#define TFT_MOSI 11
|
||||||
#define TFT_MISO 12
|
#define TFT_MISO 12
|
||||||
#define TFT_TOUCH_CS 255
|
#define TFT_TOUCH_CS 255
|
||||||
#define TFT_TOUCH_INT 255
|
#define TFT_TOUCH_INT 255
|
||||||
#define TFT_DC 9
|
#define TFT_DC 9
|
||||||
#define TFT_CS 255
|
#define TFT_CS 22 // 255 for LORES ST7789 (NO CS)
|
||||||
#define TFT_RST 23
|
#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V
|
||||||
#else
|
|
||||||
// ILI9341
|
|
||||||
#define TFT_SCLK 13
|
|
||||||
#define TFT_MOSI 11
|
|
||||||
#define TFT_MISO 12
|
|
||||||
#define TFT_TOUCH_CS 255 //38
|
|
||||||
#define TFT_TOUCH_INT 255 //37
|
|
||||||
#define TFT_DC 9
|
|
||||||
#define TFT_CS 23
|
|
||||||
#define TFT_RST 255
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// PSRAM
|
// PSRAM
|
||||||
#define PSRAM_CS 36
|
#define PSRAM_CS 36
|
||||||
|
|
@ -38,10 +24,10 @@
|
||||||
#define SD_SCLK 13
|
#define SD_SCLK 13
|
||||||
#define SD_MOSI 12
|
#define SD_MOSI 12
|
||||||
#define SD_MISO 11
|
#define SD_MISO 11
|
||||||
#ifdef TEENSYBOY
|
#ifdef EXTERNAL_SD
|
||||||
#define SD_CS BUILTIN_SDCARD
|
#define SD_CS 8
|
||||||
#else
|
#else
|
||||||
#define SD_CS 5
|
#define SD_CS BUILTIN_SDCARD
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// I2C keyboard
|
// I2C keyboard
|
||||||
|
|
@ -54,17 +40,15 @@
|
||||||
#define PIN_JOY2_BTN 17
|
#define PIN_JOY2_BTN 17
|
||||||
#define PIN_KEY_USER1 3 //34
|
#define PIN_KEY_USER1 3 //34
|
||||||
#define PIN_KEY_USER2 4 //35
|
#define PIN_KEY_USER2 4 //35
|
||||||
//#define PIN_KEY_USER3 255
|
//#define PIN_KEY_USER3 33
|
||||||
//#define PIN_KEY_USER4 255
|
//#define PIN_KEY_USER4 39
|
||||||
|
|
||||||
#ifdef TEENSYBOY
|
|
||||||
// Second joystick
|
// Second joystick
|
||||||
#define PIN_JOY1_BTN 2
|
#define PIN_JOY1_BTN 2
|
||||||
#define PIN_JOY1_1 14 // UP
|
#define PIN_JOY1_1 14 // UP
|
||||||
#define PIN_JOY1_2 7 // DOWN
|
#define PIN_JOY1_2 7 // DOWN
|
||||||
#define PIN_JOY1_3 6 // RIGHT
|
#define PIN_JOY1_3 6 // RIGHT
|
||||||
#define PIN_JOY1_4 5 // LEFT
|
#define PIN_JOY1_4 5 // LEFT
|
||||||
#endif
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
// OLD LAYOUT!!!!
|
// OLD LAYOUT!!!!
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,20 @@
|
||||||
#ifndef _PLATFORM_CONFIG_H_
|
#ifndef _PLATFORM_CONFIG_H_
|
||||||
#define _PLATFORM_CONFIG_H_
|
#define _PLATFORM_CONFIG_H_
|
||||||
|
|
||||||
//#define OLD_LAYOUT 1
|
//#define OLD_LAYOUT 1
|
||||||
//#define TEENSYBOY 1
|
|
||||||
|
|
||||||
#define HAS_PSRAM 1
|
#define ILI9341 1
|
||||||
|
//#define ST7789 1
|
||||||
|
//#define SWAP_JOYSTICK 1
|
||||||
|
//#define LOHRES 1
|
||||||
|
//#define ROTATE_SCREEN 1
|
||||||
|
#define EXTERNAL_SD 1
|
||||||
|
|
||||||
//#define USE_SDFAT 1
|
#define HAS_PSRAM 1
|
||||||
//#define SD_FAT_TYPE 1
|
|
||||||
//#define USE_SDFS 1
|
//#define USE_SDFAT 1
|
||||||
//#define SDFSDEV "1:"
|
//#define SD_FAT_TYPE 1
|
||||||
|
//#define USE_SDFS 1
|
||||||
|
//#define SDFSDEV "1:"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -240,6 +240,7 @@ Serial.printf("D") ; Serial.flush();
|
||||||
|
|
||||||
#include "emuapi.h"
|
#include "emuapi.h"
|
||||||
|
|
||||||
|
#define MAXPSRAM (256*1024)
|
||||||
|
|
||||||
PSRAM_T::PSRAM_T(uint8_t cs, uint8_t mosi, uint8_t sclk, uint8_t miso)
|
PSRAM_T::PSRAM_T(uint8_t cs, uint8_t mosi, uint8_t sclk, uint8_t miso)
|
||||||
{
|
{
|
||||||
|
|
@ -247,17 +248,22 @@ PSRAM_T::PSRAM_T(uint8_t cs, uint8_t mosi, uint8_t sclk, uint8_t miso)
|
||||||
|
|
||||||
void PSRAM_T::begin(void)
|
void PSRAM_T::begin(void)
|
||||||
{
|
{
|
||||||
|
// emu_Malloc(MAXPSRAM);
|
||||||
emu_FileTempInit();
|
emu_FileTempInit();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PSRAM_T::psram_read_n(uint32_t addr, uint8_t * val, int n)
|
void PSRAM_T::psram_read_n(uint32_t addr, uint8_t * val, int n)
|
||||||
{
|
{
|
||||||
|
//if (addr >= MAXPSRAM)
|
||||||
|
// return;
|
||||||
emu_FileTempRead(addr,val,n);
|
emu_FileTempRead(addr,val,n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void PSRAM_T::psram_write(uint32_t addr, uint8_t val)
|
void PSRAM_T::psram_write(uint32_t addr, uint8_t val)
|
||||||
{
|
{
|
||||||
|
//if (addr >= MAXPSRAM)
|
||||||
|
// return;
|
||||||
emu_FileTempWrite(addr,val);
|
emu_FileTempWrite(addr,val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = {
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static void dmaInterrupt() {
|
static void dmaInterrupt() {
|
||||||
dmatx.clearInterrupt();
|
dmatx.clearInterrupt();
|
||||||
curTransfer++;
|
curTransfer++;
|
||||||
|
|
@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t
|
||||||
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
||||||
int dx=0;
|
int dx=0;
|
||||||
int dy=0;
|
int dy=0;
|
||||||
|
|
||||||
#ifdef ST7789
|
#ifdef ST7789
|
||||||
|
if (TFT_REALWIDTH == TFT_REALHEIGHT)
|
||||||
|
{
|
||||||
#ifdef ROTATE_SCREEN
|
#ifdef ROTATE_SCREEN
|
||||||
if (!flipped) {
|
if (!flipped) {
|
||||||
dy += 80;
|
dy += 80;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if (flipped) {
|
if (flipped) {
|
||||||
dx += 80;
|
dx += 80;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_CASET);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(x1+dx);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(x2+dx);
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_PASET);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(y1+dy);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(y2+dy);
|
||||||
|
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_RAMWR);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
|
||||||
|
|
@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void TFT_T_DMA::begin(void) {
|
void TFT_T_DMA::begin(void) {
|
||||||
SPI.setMOSI(_mosi);
|
SPI.setMOSI(_mosi);
|
||||||
SPI.setMISO(_miso);
|
SPI.setMISO(_miso);
|
||||||
|
|
@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) {
|
||||||
SPI.begin();
|
SPI.begin();
|
||||||
|
|
||||||
// Initialize display
|
// Initialize display
|
||||||
if (_rst < 255) { // toggle RST low to reset
|
if (_rst != 0xff) {
|
||||||
pinMode(_rst, OUTPUT);
|
pinMode(_rst, OUTPUT);
|
||||||
digitalWrite(_rst, HIGH);
|
digitalWrite(_rst, HIGH);
|
||||||
delay(5);
|
delay(100);
|
||||||
digitalWrite(_rst, LOW);
|
digitalWrite(_rst, LOW);
|
||||||
delay(20);
|
delay(100);
|
||||||
digitalWrite(_rst, HIGH);
|
digitalWrite(_rst, HIGH);
|
||||||
delay(120);
|
delay(200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
const uint8_t *addr = init_commands;
|
const uint8_t *addr = init_commands;
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
|
@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) {
|
||||||
SPI.transfer(ILI9341_DISPON);
|
SPI.transfer(ILI9341_DISPON);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef ST7789
|
#ifdef ST7789
|
||||||
uint8_t numCommands, numArgs;
|
uint8_t numCommands, numArgs;
|
||||||
|
|
@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) {
|
||||||
if(ms) {
|
if(ms) {
|
||||||
ms = *addr++; // Read post-command delay time (ms)
|
ms = *addr++; // Read post-command delay time (ms)
|
||||||
if(ms == 255) ms = 500; // If 255, delay for 500 ms
|
if(ms == 255) ms = 500; // If 255, delay for 500 ms
|
||||||
SPI.endTransaction();
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
|
SPI.endTransaction();
|
||||||
delay(ms);
|
delay(ms);
|
||||||
//beginSPITransaction();
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
|
digitalWrite(_cs, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
digitalWrite(_cs, 1);
|
||||||
#endif
|
#endif
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
|
SPI.endTransaction();
|
||||||
|
|
||||||
cancelled = false;
|
cancelled = false;
|
||||||
|
|
||||||
#ifdef FLIP_SCREEN
|
#ifdef FLIP_SCREEN
|
||||||
flipscreen(true);
|
flipscreen(true);
|
||||||
#else
|
#else
|
||||||
flipscreen(false);
|
flipscreen(false);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef ST7789
|
||||||
|
if (TFT_REALWIDTH != TFT_REALHEIGHT)
|
||||||
|
{
|
||||||
|
flipscreen(true);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) {
|
||||||
#endif
|
#endif
|
||||||
dmatx = dmasettings[0];
|
dmatx = dmasettings[0];
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1);
|
||||||
digitalWrite(_dc, 0);
|
digitalWrite(_dc, 0);
|
||||||
SPI.transfer(TFT_RAMWR);
|
SPI.transfer(TFT_RAMWR);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
|
|
@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) {
|
||||||
No DMA functions
|
No DMA functions
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
SPI.transfer(TFT_RAMWR);
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
int i,j;
|
int i,j;
|
||||||
for (j=0; j<TFT_REALHEIGHT; j++)
|
for (j=0; j<TFT_REALHEIGHT; j++)
|
||||||
{
|
{
|
||||||
for (i=0; i<TFT_REALWIDTH; i++) {
|
for (i=0; i<TFT_REALWIDTH; i++) {
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(color);
|
SPI.transfer16(color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -643,24 +677,43 @@ void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) {
|
||||||
void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
|
||||||
setArea(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(x,y,x+w-1,y+h-1);
|
||||||
|
// digitalWrite(_dc, 0);
|
||||||
|
// SPI.transfer(TFT_RAMWR);
|
||||||
|
int i;
|
||||||
|
for (i=0; i<(w*h); i++)
|
||||||
|
{
|
||||||
|
//digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(color);
|
||||||
|
}
|
||||||
|
#ifdef ILI9341
|
||||||
digitalWrite(_dc, 0);
|
digitalWrite(_dc, 0);
|
||||||
SPI.transfer(TFT_RAMWR);
|
SPI.transfer(ILI9341_SLPOUT);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
#endif
|
||||||
|
digitalWrite(_cs, 1);
|
||||||
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
||||||
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
|
||||||
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
int i,j;
|
int i,j;
|
||||||
for (j=0; j<240; j++)
|
for (j=0; j<240; j++)
|
||||||
{
|
{
|
||||||
for (i=0; i<TFT_WIDTH; i++) {
|
for (i=0; i<TFT_WIDTH; i++) {
|
||||||
digitalWrite(_dc, 1);
|
// digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(*pcolors++);
|
SPI.transfer16(*pcolors++);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -670,9 +723,8 @@ void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) {
|
void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) {
|
||||||
|
|
@ -723,12 +775,12 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setArea(arx, ary, arx+arw-1, ary+arh-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(arx, ary, arx+arw-1, ary+arh-1);
|
||||||
SPI.transfer(TFT_RAMWR);
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
|
|
||||||
bitmap = bitmap + bmp_offy*w + bmp_offx;
|
bitmap = bitmap + bmp_offy*w + bmp_offx;
|
||||||
for (int row=0;row<arh; row++)
|
for (int row=0;row<arh; row++)
|
||||||
|
|
@ -737,7 +789,7 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
for (int col=0;col<arw; col++)
|
for (int col=0;col<arw; col++)
|
||||||
{
|
{
|
||||||
uint16_t color = *bmp_ptr++;
|
uint16_t color = *bmp_ptr++;
|
||||||
digitalWrite(_dc, 1);
|
// digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(color);
|
SPI.transfer16(color);
|
||||||
}
|
}
|
||||||
bitmap += w;
|
bitmap += w;
|
||||||
|
|
@ -747,9 +799,9 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
SPI.transfer(ILI9341_SLPOUT);
|
SPI.transfer(ILI9341_SLPOUT);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) {
|
void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) {
|
||||||
|
|
@ -757,20 +809,19 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
while ((c = *text++)) {
|
while ((c = *text++)) {
|
||||||
const unsigned char * charpt=&font8x8[c][0];
|
const unsigned char * charpt=&font8x8[c][0];
|
||||||
|
|
||||||
setArea(x,y,x+7,y+(doublesize?15:7));
|
|
||||||
|
|
||||||
//SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(x,y,x+7,y+(doublesize?15:7));
|
||||||
//digitalWrite(_dc, 0);
|
//digitalWrite(_dc, 0);
|
||||||
//SPI.transfer(TFT_RAMWR);
|
//SPI.transfer(TFT_RAMWR);
|
||||||
|
//digitalWrite(_dc, 1);
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
for (int i=0;i<8;i++)
|
for (int i=0;i<8;i++)
|
||||||
{
|
{
|
||||||
unsigned char bits;
|
unsigned char bits;
|
||||||
if (doublesize) {
|
if (doublesize) {
|
||||||
bits = *charpt;
|
bits = *charpt;
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
if (bits&0x01) SPI.transfer16(fgcolor);
|
if (bits&0x01) SPI.transfer16(fgcolor);
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
bits = bits >> 1;
|
bits = bits >> 1;
|
||||||
|
|
@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
}
|
}
|
||||||
bits = *charpt++;
|
bits = *charpt++;
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
if (bits&0x01) SPI.transfer16(fgcolor);
|
if (bits&0x01) SPI.transfer16(fgcolor);
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
bits = bits >> 1;
|
bits = bits >> 1;
|
||||||
|
|
@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) {
|
|
||||||
setArea(x,y,x+w-1,y+h-1);
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
SPI.transfer(TFT_RAMWR);
|
|
||||||
int i;
|
|
||||||
for (i=0; i<(w*h); i++)
|
|
||||||
{
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
SPI.transfer16(color);
|
|
||||||
}
|
|
||||||
#ifdef ILI9341
|
|
||||||
digitalWrite(_dc, 0);
|
|
||||||
SPI.transfer(ILI9341_SLPOUT);
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
#endif
|
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************************************
|
/***********************************************************************************************
|
||||||
DMA functions
|
DMA functions
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
|
|
|
||||||
|
|
@ -21,18 +21,15 @@
|
||||||
#define B16(rgb) ((rgb<<3)&0xf8)
|
#define B16(rgb) ((rgb<<3)&0xf8)
|
||||||
|
|
||||||
|
|
||||||
#define TFT_HEIGHT 192
|
#ifdef LOHRES
|
||||||
|
|
||||||
#ifdef ILI9341
|
|
||||||
#define TFT_WIDTH 256
|
|
||||||
#define TFT_REALWIDTH 320
|
|
||||||
#define TFT_REALHEIGHT 240
|
|
||||||
#endif
|
|
||||||
#ifdef ST7789
|
|
||||||
#define TFT_WIDTH 240
|
#define TFT_WIDTH 240
|
||||||
#define TFT_REALWIDTH 240
|
#define TFT_REALWIDTH 240
|
||||||
#define TFT_REALHEIGHT 240
|
#else
|
||||||
|
#define TFT_WIDTH 256
|
||||||
|
#define TFT_REALWIDTH 320
|
||||||
#endif
|
#endif
|
||||||
|
#define TFT_HEIGHT 192
|
||||||
|
#define TFT_REALHEIGHT 240
|
||||||
|
|
||||||
#define LINES_PER_BLOCK 64
|
#define LINES_PER_BLOCK 64
|
||||||
#define NR_OF_BLOCK 4
|
#define NR_OF_BLOCK 4
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,7 @@
|
||||||
#include "platform_config.h"
|
#include "platform_config.h"
|
||||||
|
|
||||||
#ifdef TEENSYBOY
|
//#define ST7789 1
|
||||||
#define ST7789 1
|
//#define ILI9341 1
|
||||||
#define ROTATE_SCREEN 1
|
|
||||||
#else
|
|
||||||
#define ILI9341 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define TFT_LINEARINT 1
|
#define TFT_LINEARINT 1
|
||||||
#define LINEARINT_HACK 1
|
#define LINEARINT_HACK 1
|
||||||
|
|
|
||||||
|
|
@ -1373,7 +1373,7 @@ void emu_init(void)
|
||||||
|
|
||||||
|
|
||||||
emu_InitJoysticks();
|
emu_InitJoysticks();
|
||||||
#ifdef TEENSYBOY
|
#ifdef SWAP_JOYSTICK
|
||||||
joySwapped = true;
|
joySwapped = true;
|
||||||
#else
|
#else
|
||||||
joySwapped = false;
|
joySwapped = false;
|
||||||
|
|
|
||||||
|
|
@ -2,31 +2,17 @@
|
||||||
#define IOPINS_H
|
#define IOPINS_H
|
||||||
|
|
||||||
#include "platform_config.h"
|
#include "platform_config.h"
|
||||||
#include "tft_t_dma_config.h"
|
|
||||||
|
|
||||||
#ifndef OLD_LAYOUT
|
#ifndef OLD_LAYOUT
|
||||||
|
|
||||||
#ifdef ST7789
|
|
||||||
// ST7789
|
|
||||||
#define TFT_SCLK 13
|
#define TFT_SCLK 13
|
||||||
#define TFT_MOSI 11
|
#define TFT_MOSI 11
|
||||||
#define TFT_MISO 12
|
#define TFT_MISO 12
|
||||||
#define TFT_TOUCH_CS 255
|
#define TFT_TOUCH_CS 255
|
||||||
#define TFT_TOUCH_INT 255
|
#define TFT_TOUCH_INT 255
|
||||||
#define TFT_DC 9
|
#define TFT_DC 9
|
||||||
#define TFT_CS 255
|
#define TFT_CS 22 // 255 for LORES ST7789 (NO CS)
|
||||||
#define TFT_RST 23
|
#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V
|
||||||
#else
|
|
||||||
// ILI9341
|
|
||||||
#define TFT_SCLK 13
|
|
||||||
#define TFT_MOSI 11
|
|
||||||
#define TFT_MISO 12
|
|
||||||
#define TFT_TOUCH_CS 255 //38
|
|
||||||
#define TFT_TOUCH_INT 255 //37
|
|
||||||
#define TFT_DC 9
|
|
||||||
#define TFT_CS 23
|
|
||||||
#define TFT_RST 255
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// PSRAM
|
// PSRAM
|
||||||
#define PSRAM_CS 36
|
#define PSRAM_CS 36
|
||||||
|
|
@ -38,10 +24,10 @@
|
||||||
#define SD_SCLK 13
|
#define SD_SCLK 13
|
||||||
#define SD_MOSI 12
|
#define SD_MOSI 12
|
||||||
#define SD_MISO 11
|
#define SD_MISO 11
|
||||||
#ifdef TEENSYBOY
|
#ifdef EXTERNAL_SD
|
||||||
#define SD_CS BUILTIN_SDCARD
|
#define SD_CS 8
|
||||||
#else
|
#else
|
||||||
#define SD_CS 5
|
#define SD_CS BUILTIN_SDCARD
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// I2C keyboard
|
// I2C keyboard
|
||||||
|
|
@ -54,17 +40,15 @@
|
||||||
#define PIN_JOY2_BTN 17
|
#define PIN_JOY2_BTN 17
|
||||||
#define PIN_KEY_USER1 3 //34
|
#define PIN_KEY_USER1 3 //34
|
||||||
#define PIN_KEY_USER2 4 //35
|
#define PIN_KEY_USER2 4 //35
|
||||||
//#define PIN_KEY_USER3 255
|
//#define PIN_KEY_USER3 33
|
||||||
//#define PIN_KEY_USER4 255
|
//#define PIN_KEY_USER4 39
|
||||||
|
|
||||||
#ifdef TEENSYBOY
|
|
||||||
// Second joystick
|
// Second joystick
|
||||||
#define PIN_JOY1_BTN 2
|
#define PIN_JOY1_BTN 2
|
||||||
#define PIN_JOY1_1 14 // UP
|
#define PIN_JOY1_1 14 // UP
|
||||||
#define PIN_JOY1_2 7 // DOWN
|
#define PIN_JOY1_2 7 // DOWN
|
||||||
#define PIN_JOY1_3 6 // RIGHT
|
#define PIN_JOY1_3 6 // RIGHT
|
||||||
#define PIN_JOY1_4 5 // LEFT
|
#define PIN_JOY1_4 5 // LEFT
|
||||||
#endif
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
// OLD LAYOUT!!!!
|
// OLD LAYOUT!!!!
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,20 @@
|
||||||
#ifndef _PLATFORM_CONFIG_H_
|
#ifndef _PLATFORM_CONFIG_H_
|
||||||
#define _PLATFORM_CONFIG_H_
|
#define _PLATFORM_CONFIG_H_
|
||||||
|
|
||||||
//#define OLD_LAYOUT 1
|
//#define OLD_LAYOUT 1
|
||||||
//#define TEENSYBOY 1
|
|
||||||
|
|
||||||
//#define HAS_PSRAM 1
|
#define ILI9341 1
|
||||||
|
//#define ST7789 1
|
||||||
|
//#define SWAP_JOYSTICK 1
|
||||||
|
//#define LOHRES 1
|
||||||
|
//#define ROTATE_SCREEN 1
|
||||||
|
#define EXTERNAL_SD 1
|
||||||
|
|
||||||
//#define USE_SDFAT 1
|
#define HAS_PSRAM 1
|
||||||
//#define SD_FAT_TYPE 1
|
|
||||||
//#define USE_SDFS 1
|
//#define USE_SDFAT 1
|
||||||
//#define SDFSDEV "1:"
|
//#define SD_FAT_TYPE 1
|
||||||
|
//#define USE_SDFS 1
|
||||||
|
//#define SDFSDEV "1:"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,6 @@ PROGMEM static const uint8_t init_commands[] = {
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static void dmaInterrupt() {
|
static void dmaInterrupt() {
|
||||||
dmatx.clearInterrupt();
|
dmatx.clearInterrupt();
|
||||||
curTransfer++;
|
curTransfer++;
|
||||||
|
|
@ -220,18 +219,41 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t
|
||||||
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
||||||
int dx=0;
|
int dx=0;
|
||||||
int dy=0;
|
int dy=0;
|
||||||
|
|
||||||
#ifdef ST7789
|
#ifdef ST7789
|
||||||
|
if (TFT_REALWIDTH == TFT_REALHEIGHT)
|
||||||
|
{
|
||||||
#ifdef ROTATE_SCREEN
|
#ifdef ROTATE_SCREEN
|
||||||
if (!flipped) {
|
if (!flipped) {
|
||||||
dy += 80;
|
dy += 80;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if (flipped) {
|
if (flipped) {
|
||||||
dx += 80;
|
dx += 80;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_CASET);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(x1+dx);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(x2+dx);
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_PASET);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(y1+dy);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(y2+dy);
|
||||||
|
|
||||||
|
digitalWrite(_dc, 0);
|
||||||
|
SPI.transfer(TFT_RAMWR);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
|
||||||
|
|
@ -257,6 +279,8 @@ void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void TFT_T_DMA::begin(void) {
|
void TFT_T_DMA::begin(void) {
|
||||||
SPI.setMOSI(_mosi);
|
SPI.setMOSI(_mosi);
|
||||||
SPI.setMISO(_miso);
|
SPI.setMISO(_miso);
|
||||||
|
|
@ -264,16 +288,17 @@ void TFT_T_DMA::begin(void) {
|
||||||
SPI.begin();
|
SPI.begin();
|
||||||
|
|
||||||
// Initialize display
|
// Initialize display
|
||||||
if (_rst < 255) { // toggle RST low to reset
|
if (_rst != 0xff) {
|
||||||
pinMode(_rst, OUTPUT);
|
pinMode(_rst, OUTPUT);
|
||||||
digitalWrite(_rst, HIGH);
|
digitalWrite(_rst, HIGH);
|
||||||
delay(5);
|
delay(100);
|
||||||
digitalWrite(_rst, LOW);
|
digitalWrite(_rst, LOW);
|
||||||
delay(20);
|
delay(100);
|
||||||
digitalWrite(_rst, HIGH);
|
digitalWrite(_rst, HIGH);
|
||||||
delay(120);
|
delay(200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
const uint8_t *addr = init_commands;
|
const uint8_t *addr = init_commands;
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
|
@ -307,7 +332,6 @@ void TFT_T_DMA::begin(void) {
|
||||||
SPI.transfer(ILI9341_DISPON);
|
SPI.transfer(ILI9341_DISPON);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef ST7789
|
#ifdef ST7789
|
||||||
uint8_t numCommands, numArgs;
|
uint8_t numCommands, numArgs;
|
||||||
|
|
@ -332,22 +356,31 @@ void TFT_T_DMA::begin(void) {
|
||||||
if(ms) {
|
if(ms) {
|
||||||
ms = *addr++; // Read post-command delay time (ms)
|
ms = *addr++; // Read post-command delay time (ms)
|
||||||
if(ms == 255) ms = 500; // If 255, delay for 500 ms
|
if(ms == 255) ms = 500; // If 255, delay for 500 ms
|
||||||
SPI.endTransaction();
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
|
SPI.endTransaction();
|
||||||
delay(ms);
|
delay(ms);
|
||||||
//beginSPITransaction();
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
|
digitalWrite(_cs, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
digitalWrite(_cs, 1);
|
||||||
#endif
|
#endif
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
|
SPI.endTransaction();
|
||||||
|
|
||||||
cancelled = false;
|
cancelled = false;
|
||||||
|
|
||||||
#ifdef FLIP_SCREEN
|
#ifdef FLIP_SCREEN
|
||||||
flipscreen(true);
|
flipscreen(true);
|
||||||
#else
|
#else
|
||||||
flipscreen(false);
|
flipscreen(false);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef ST7789
|
||||||
|
if (TFT_REALWIDTH != TFT_REALHEIGHT)
|
||||||
|
{
|
||||||
|
flipscreen(true);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -434,6 +467,7 @@ void TFT_T_DMA::startDMA(void) {
|
||||||
#endif
|
#endif
|
||||||
dmatx = dmasettings[0];
|
dmatx = dmasettings[0];
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea((TFT_REALWIDTH-TFT_WIDTH)/2, (TFT_REALHEIGHT-TFT_HEIGHT)/2, (TFT_REALWIDTH-TFT_WIDTH)/2+TFT_WIDTH-1, (TFT_REALHEIGHT-TFT_HEIGHT)/2+TFT_HEIGHT-1);
|
||||||
digitalWrite(_dc, 0);
|
digitalWrite(_dc, 0);
|
||||||
SPI.transfer(TFT_RAMWR);
|
SPI.transfer(TFT_RAMWR);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
|
|
@ -623,17 +657,17 @@ void TFT_T_DMA::readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) {
|
||||||
No DMA functions
|
No DMA functions
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
SPI.transfer(TFT_RAMWR);
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
int i,j;
|
int i,j;
|
||||||
for (j=0; j<TFT_REALHEIGHT; j++)
|
for (j=0; j<TFT_REALHEIGHT; j++)
|
||||||
{
|
{
|
||||||
for (i=0; i<TFT_REALWIDTH; i++) {
|
for (i=0; i<TFT_REALWIDTH; i++) {
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(color);
|
SPI.transfer16(color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -643,24 +677,43 @@ void TFT_T_DMA::fillScreenNoDma(uint16_t color) {
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) {
|
||||||
void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
|
||||||
setArea(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(x,y,x+w-1,y+h-1);
|
||||||
|
// digitalWrite(_dc, 0);
|
||||||
|
// SPI.transfer(TFT_RAMWR);
|
||||||
|
int i;
|
||||||
|
for (i=0; i<(w*h); i++)
|
||||||
|
{
|
||||||
|
//digitalWrite(_dc, 1);
|
||||||
|
SPI.transfer16(color);
|
||||||
|
}
|
||||||
|
#ifdef ILI9341
|
||||||
digitalWrite(_dc, 0);
|
digitalWrite(_dc, 0);
|
||||||
SPI.transfer(TFT_RAMWR);
|
SPI.transfer(ILI9341_SLPOUT);
|
||||||
|
digitalWrite(_dc, 1);
|
||||||
|
#endif
|
||||||
|
digitalWrite(_cs, 1);
|
||||||
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
||||||
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
|
||||||
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
int i,j;
|
int i,j;
|
||||||
for (j=0; j<240; j++)
|
for (j=0; j<240; j++)
|
||||||
{
|
{
|
||||||
for (i=0; i<TFT_WIDTH; i++) {
|
for (i=0; i<TFT_WIDTH; i++) {
|
||||||
digitalWrite(_dc, 1);
|
// digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(*pcolors++);
|
SPI.transfer16(*pcolors++);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -670,9 +723,8 @@ void TFT_T_DMA::writeScreenNoDma(const uint16_t *pcolors) {
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) {
|
void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) {
|
||||||
|
|
@ -723,12 +775,12 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setArea(arx, ary, arx+arw-1, ary+arh-1);
|
|
||||||
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(arx, ary, arx+arw-1, ary+arh-1);
|
||||||
SPI.transfer(TFT_RAMWR);
|
//digitalWrite(_dc, 0);
|
||||||
|
//SPI.transfer(TFT_RAMWR);
|
||||||
|
|
||||||
bitmap = bitmap + bmp_offy*w + bmp_offx;
|
bitmap = bitmap + bmp_offy*w + bmp_offx;
|
||||||
for (int row=0;row<arh; row++)
|
for (int row=0;row<arh; row++)
|
||||||
|
|
@ -737,7 +789,7 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
for (int col=0;col<arw; col++)
|
for (int col=0;col<arw; col++)
|
||||||
{
|
{
|
||||||
uint16_t color = *bmp_ptr++;
|
uint16_t color = *bmp_ptr++;
|
||||||
digitalWrite(_dc, 1);
|
// digitalWrite(_dc, 1);
|
||||||
SPI.transfer16(color);
|
SPI.transfer16(color);
|
||||||
}
|
}
|
||||||
bitmap += w;
|
bitmap += w;
|
||||||
|
|
@ -747,9 +799,9 @@ void TFT_T_DMA::drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, ui
|
||||||
SPI.transfer(ILI9341_SLPOUT);
|
SPI.transfer(ILI9341_SLPOUT);
|
||||||
digitalWrite(_dc, 1);
|
digitalWrite(_dc, 1);
|
||||||
#endif
|
#endif
|
||||||
|
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) {
|
void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize) {
|
||||||
|
|
@ -757,20 +809,19 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
while ((c = *text++)) {
|
while ((c = *text++)) {
|
||||||
const unsigned char * charpt=&font8x8[c][0];
|
const unsigned char * charpt=&font8x8[c][0];
|
||||||
|
|
||||||
setArea(x,y,x+7,y+(doublesize?15:7));
|
|
||||||
|
|
||||||
//SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
|
setArea(x,y,x+7,y+(doublesize?15:7));
|
||||||
//digitalWrite(_dc, 0);
|
//digitalWrite(_dc, 0);
|
||||||
//SPI.transfer(TFT_RAMWR);
|
//SPI.transfer(TFT_RAMWR);
|
||||||
|
//digitalWrite(_dc, 1);
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
for (int i=0;i<8;i++)
|
for (int i=0;i<8;i++)
|
||||||
{
|
{
|
||||||
unsigned char bits;
|
unsigned char bits;
|
||||||
if (doublesize) {
|
if (doublesize) {
|
||||||
bits = *charpt;
|
bits = *charpt;
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
if (bits&0x01) SPI.transfer16(fgcolor);
|
if (bits&0x01) SPI.transfer16(fgcolor);
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
bits = bits >> 1;
|
bits = bits >> 1;
|
||||||
|
|
@ -796,7 +847,7 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
}
|
}
|
||||||
bits = *charpt++;
|
bits = *charpt++;
|
||||||
digitalWrite(_dc, 1);
|
//digitalWrite(_dc, 1);
|
||||||
if (bits&0x01) SPI.transfer16(fgcolor);
|
if (bits&0x01) SPI.transfer16(fgcolor);
|
||||||
else SPI.transfer16(bgcolor);
|
else SPI.transfer16(bgcolor);
|
||||||
bits = bits >> 1;
|
bits = bits >> 1;
|
||||||
|
|
@ -831,35 +882,18 @@ void TFT_T_DMA::drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void TFT_T_DMA::drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) {
|
|
||||||
setArea(x,y,x+w-1,y+h-1);
|
|
||||||
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
|
||||||
digitalWrite(_cs, 0);
|
digitalWrite(_cs, 0);
|
||||||
digitalWrite(_dc, 0);
|
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
||||||
SPI.transfer(TFT_RAMWR);
|
|
||||||
int i;
|
|
||||||
for (i=0; i<(w*h); i++)
|
|
||||||
{
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
SPI.transfer16(color);
|
|
||||||
}
|
|
||||||
#ifdef ILI9341
|
|
||||||
digitalWrite(_dc, 0);
|
|
||||||
SPI.transfer(ILI9341_SLPOUT);
|
|
||||||
digitalWrite(_dc, 1);
|
|
||||||
#endif
|
|
||||||
digitalWrite(_cs, 1);
|
digitalWrite(_cs, 1);
|
||||||
SPI.endTransaction();
|
SPI.endTransaction();
|
||||||
|
|
||||||
setArea(0, 0, (TFT_REALWIDTH-1), (TFT_REALHEIGHT-1));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************************************
|
/***********************************************************************************************
|
||||||
DMA functions
|
DMA functions
|
||||||
***********************************************************************************************/
|
***********************************************************************************************/
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue