Sending SPI Data Question, Im stumped!!


I have an ISD4003-04 (4 Minute ISD Chipcorder (Voice Recorder IC). I have the data sheet and have tried to control the IC according to the data sheet and apparently I am not sending the data correctly,

So the control register is made up like this.

A0 | A1 | A2 | A3 | A4 | A5 | A6 | A7 | A8 | A9 | A10 | C0 | C1 | C2 | C3 | C4 |

A0 thru A10 are the Address Information in Binary. (The C bytes control if record, play, stop, etc)

C0 thru C4 are the control bytes

So say I want to record into slot 0.


to record address 0
00000000000 (11 bits) A0 to A10)), then 00101 (5 bits)C0 to C4))

set for MSBFIRST
SPI.transfer (8,0,5)

to play address 0
00000000000 (11 bits)A0 to A10)), then 00111 (5 bits) C0 to C4))

set for LSBFIRST
SPI.transfer (16,0,7)

To Stop
No address bits needed just command bits
011x0 (C0 to C4)

set for MSBFIRST
SPI.transfer (8,12)

Of course all of my pinmodes and other setup variable have been set, Ive imported the SPI library etc. Can someone see what I may be doing wrong.

Thanks in Advance.


what do you mean with SPI.transfer (8,0,5) or SPI.transfer (16,0,7) ?

are you using the built in SPI.transfer() function?

what about a bit of code we could really see how things are really setup?

According to the datasheet you ALWAYS send the 11 address bits, even when they are not used.

(Sorry this can't be a link but the ']' in the URL confuses the parser.)

Use two SPI.transfer(dataByte); operations to transfer each command (16 address+control bits).