Datasheet

VS1053b Datasheet
9 OPERATION
IMA ADPCM block is 256 words, i.e. 512 bytes. If you wish to interrupt reading data and
possibly continue later, please stop at the boundary. This way whole blocks are skipped and
the encoded stream stays valid.
9.8.3 Adding a PCM RIFF Header
To make your PCM file a RIFF / WAV file, you have to add a header to the data. The following
shows a header for a mono file. Note that 2- and 4-byte values are little-endian (lowest byte
first).
File Offset Field Name Size Bytes Description
0 ChunkID 4
"RIFF"
4 ChunkSize 4 F0 F1 F2 F3 File size - 8
8 Format 4
"WAVE"
12 SubChunk1ID 4
"fmt "
16 SubChunk1Size 4 0x10 0x0 0x0 0x0 20
20 AudioFormat 2 0x01 0x0 0x1 for PCM
22 NumOfChannels 2 C0 C1 1 for mono, 2 for stereo
24 SampleRate 4 R0 R1 R2 R3 0x1f40 for 8 kHz
28 ByteRate 4 B0 B1 B2 B3 0x3e80 for 8 kHz mono
32 BlockAlign 2 0x02 0x00 2 for mono, 4 for stereo
34 BitsPerSample 2 0x10 0x00 16 bits / sample
36 SubChunk3ID 4
"data"
40 SubChunk3Size 4 D0 D1 D2 D3 Data size (File Size-36)
44 Samples... Audio samples
The values in the table are calculated as follows:
R = F
s
(see Chapter 9.8.1 to see how to calculate F
s
)
B = 2 × F
s
× C
If you know beforehand how much you are going to record, you may fill in the complete header
before any actual data. However, if you don’t know how much you are going to record, you have
to fill in the header size datas F and D after finishing recording.
The PCM data is read from SCI_HDAT0 and written into file as follows. The high 8 bits of
SCI_HDAT0 should be written as the first byte to a file, then the low 8 bits. Note that this is
contrary to the default operation of some 16-bit microcontrollers, and you may have to take
extra care to do this right.
Below is an example of a valid header for a 44.1 kHz mono PCM file that has a final length of
1798768 (0x1B7270) bytes:
0000 52 49 46 46 68 72 1b 00 57 41 56 45 66 6d 74 20 |RIFFhr..WAVEfmt |
0010 10 00 00 00 01 00 01 00 80 bb 00 00 00 77 01 00 |.............w..|
0020 02 00 10 00 64 61 74 61 44 72 1b 00 |....dataDr......|
Version: 1.13, 2011-05-27 53