33package ili9341
44
55import (
6- "device/sam"
76 "machine"
87)
98
@@ -27,90 +26,31 @@ func (pd *spiDriver) configure(config *Config) {
2726}
2827
2928func (pd * spiDriver ) write8 (b byte ) {
30- pd .bus .Bus .CTRLB .ClearBits (sam .SERCOM_SPIM_CTRLB_RXEN )
31-
32- for ! pd .bus .Bus .INTFLAG .HasBits (sam .SERCOM_SPIM_INTFLAG_DRE ) {
33- }
34- pd .bus .Bus .DATA .Set (uint32 (b ))
35-
36- pd .bus .Bus .CTRLB .SetBits (sam .SERCOM_SPIM_CTRLB_RXEN )
37- for pd .bus .Bus .SYNCBUSY .HasBits (sam .SERCOM_SPIM_SYNCBUSY_CTRLB ) {
38- }
29+ pd .bus .Tx ([]byte {b }, nil )
3930}
4031
4132func (pd * spiDriver ) write8n (b byte , n int ) {
42- pd .bus .Bus .CTRLB .ClearBits (sam .SERCOM_SPIM_CTRLB_RXEN )
43-
44- for i , c := 0 , n ; i < c ; i ++ {
45- for ! pd .bus .Bus .INTFLAG .HasBits (sam .SERCOM_SPIM_INTFLAG_DRE ) {
46- }
47- pd .bus .Bus .DATA .Set (uint32 (b ))
48- }
49-
50- pd .bus .Bus .CTRLB .SetBits (sam .SERCOM_SPIM_CTRLB_RXEN )
51- for pd .bus .Bus .SYNCBUSY .HasBits (sam .SERCOM_SPIM_SYNCBUSY_CTRLB ) {
33+ for i := 0 ; i < n ; i ++ {
34+ pd .bus .Tx ([]byte {b }, nil )
5235 }
5336}
5437
5538func (pd * spiDriver ) write8sl (b []byte ) {
56- pd .bus .Bus .CTRLB .ClearBits (sam .SERCOM_SPIM_CTRLB_RXEN )
57-
58- for i , c := 0 , len (b ); i < c ; i ++ {
59- for ! pd .bus .Bus .INTFLAG .HasBits (sam .SERCOM_SPIM_INTFLAG_DRE ) {
60- }
61- pd .bus .Bus .DATA .Set (uint32 (b [i ]))
62- }
63-
64- pd .bus .Bus .CTRLB .SetBits (sam .SERCOM_SPIM_CTRLB_RXEN )
65- for pd .bus .Bus .SYNCBUSY .HasBits (sam .SERCOM_SPIM_SYNCBUSY_CTRLB ) {
66- }
39+ pd .bus .Tx (b , nil )
6740}
6841
6942func (pd * spiDriver ) write16 (data uint16 ) {
70- pd .bus .Bus .CTRLB .ClearBits (sam .SERCOM_SPIM_CTRLB_RXEN )
71-
72- for ! pd .bus .Bus .INTFLAG .HasBits (sam .SERCOM_SPIM_INTFLAG_DRE ) {
73- }
74- pd .bus .Bus .DATA .Set (uint32 (uint8 (data >> 8 )))
75- for ! pd .bus .Bus .INTFLAG .HasBits (sam .SERCOM_SPIM_INTFLAG_DRE ) {
76- }
77- pd .bus .Bus .DATA .Set (uint32 (uint8 (data )))
78-
79- pd .bus .Bus .CTRLB .SetBits (sam .SERCOM_SPIM_CTRLB_RXEN )
80- for pd .bus .Bus .SYNCBUSY .HasBits (sam .SERCOM_SPIM_SYNCBUSY_CTRLB ) {
81- }
43+ pd .bus .Tx ([]byte {uint8 (data >> 8 ), uint8 (data )}, nil )
8244}
8345
8446func (pd * spiDriver ) write16n (data uint16 , n int ) {
85- pd .bus .Bus .CTRLB .ClearBits (sam .SERCOM_SPIM_CTRLB_RXEN )
86-
8747 for i := 0 ; i < n ; i ++ {
88- for ! pd .bus .Bus .INTFLAG .HasBits (sam .SERCOM_SPIM_INTFLAG_DRE ) {
89- }
90- pd .bus .Bus .DATA .Set (uint32 (uint8 (data >> 8 )))
91- for ! pd .bus .Bus .INTFLAG .HasBits (sam .SERCOM_SPIM_INTFLAG_DRE ) {
92- }
93- pd .bus .Bus .DATA .Set (uint32 (uint8 (data )))
94- }
95-
96- pd .bus .Bus .CTRLB .SetBits (sam .SERCOM_SPIM_CTRLB_RXEN )
97- for pd .bus .Bus .SYNCBUSY .HasBits (sam .SERCOM_SPIM_SYNCBUSY_CTRLB ) {
48+ pd .bus .Tx ([]byte {uint8 (data >> 8 ), uint8 (data )}, nil )
9849 }
9950}
10051
10152func (pd * spiDriver ) write16sl (data []uint16 ) {
102- pd .bus .Bus .CTRLB .ClearBits (sam .SERCOM_SPIM_CTRLB_RXEN )
103-
10453 for i , c := 0 , len (data ); i < c ; i ++ {
105- for ! pd .bus .Bus .INTFLAG .HasBits (sam .SERCOM_SPIM_INTFLAG_DRE ) {
106- }
107- pd .bus .Bus .DATA .Set (uint32 (uint8 (data [i ] >> 8 )))
108- for ! pd .bus .Bus .INTFLAG .HasBits (sam .SERCOM_SPIM_INTFLAG_DRE ) {
109- }
110- pd .bus .Bus .DATA .Set (uint32 (uint8 (data [i ])))
111- }
112-
113- pd .bus .Bus .CTRLB .SetBits (sam .SERCOM_SPIM_CTRLB_RXEN )
114- for pd .bus .Bus .SYNCBUSY .HasBits (sam .SERCOM_SPIM_SYNCBUSY_CTRLB ) {
54+ pd .bus .Tx ([]byte {uint8 (data [i ] >> 8 ), uint8 (data [i ])}, nil )
11555 }
11656}
0 commit comments