@@ -82,7 +82,7 @@ sfeTkError_t sfeTkArdSPI::init(bool bInit)
82
82
}
83
83
84
84
// ---------------------------------------------------------------------------------
85
- // writeRegisterByte ()
85
+ // writeByte ()
86
86
//
87
87
// Writes a single byte to the device.
88
88
//
@@ -108,6 +108,46 @@ sfeTkError_t sfeTkArdSPI::writeByte(uint8_t dataToWrite)
108
108
return kSTkErrOk ;
109
109
}
110
110
111
+ // ---------------------------------------------------------------------------------
112
+ // writeWord()
113
+ //
114
+ // Writes a word to the device without indexing to a register.
115
+ //
116
+ // Returns kSTkErrOk on success
117
+ //
118
+ sfeTkError_t sfeTkArdSPI::writeWord (uint16_t dataToWrite)
119
+ {
120
+ return writeRegion ((uint8_t *)&dataToWrite, sizeof (uint8_t )) > 0 ;
121
+ }
122
+
123
+
124
+ // ---------------------------------------------------------------------------------
125
+ // writeRegion()
126
+ //
127
+ // Writes an array of data to the device without indexing to a register.
128
+ //
129
+ // Returns kSTkErrOk on success
130
+ //
131
+ sfeTkError_t sfeTkArdSPI::writeRegion (const uint8_t *dataToWrite, size_t length)
132
+ {
133
+
134
+ if (!_spiPort)
135
+ return kSTkErrBusNotInit ;
136
+
137
+ _spiPort->beginTransaction (_sfeSPISettings);
138
+ // Signal communication start
139
+ digitalWrite (cs (), LOW);
140
+
141
+ for (size_t i = 0 ; i < length; i++)
142
+ _spiPort->transfer (*dataToWrite++);
143
+
144
+ // End communication
145
+ digitalWrite (cs (), HIGH);
146
+ _spiPort->endTransaction ();
147
+
148
+ return kSTkErrOk ;
149
+ }
150
+
111
151
// ---------------------------------------------------------------------------------
112
152
// writeRegisterByte()
113
153
//
@@ -164,6 +204,7 @@ sfeTkError_t sfeTkArdSPI::writeRegisterRegion(uint8_t devReg, const uint8_t *dat
164
204
165
205
// Signal communication start
166
206
digitalWrite (cs (), LOW);
207
+
167
208
_spiPort->transfer (devReg);
168
209
169
210
for (size_t i = 0 ; i < length; i++)
@@ -278,4 +319,4 @@ sfeTkError_t sfeTkArdSPI::readRegister16Region(uint16_t devReg, uint8_t *data, s
278
319
readBytes = numBytes;
279
320
280
321
return kSTkErrOk ;
281
- }
322
+ }
0 commit comments