Other Parts Discussed in Thread: CC2500
Dear all
I'm trying to speed up communication through the spi interface between a msp430 and the CC2500.
I'm performing a burst write access on the CC2500_TXFIFO with the following code.
CSn_PxOUT &= ~CSn_PIN; // CC2500 CS enable
while (SPI_USCIB0_PxIN&SPI_USCIB0_SOMI); // Wait for CC2500 ready
IFG2 &= ~UCB0RXIFG;
// Send the address of the register to be written (burst mode selected
UCB0TXBUF = TI_CC2500_TXFIFO | TI_CC2500_WRITE_BURST;
while (!(IFG2&UCB0RXIFG)); // Wait for TX to finish
// send the size of the buffer to be sent (CC2500 used in variable packet lenght transmission mode)
IFG2 &= ~UCB0RXIFG;
UCB0TXBUF = size; // Send buffer size
while (!(IFG2&UCB0RXIFG)); // Wait for TX to finish
IFG2 &= ~UCB0RXIFG;
for (i = 0; i < count; i++)
{
IFG2 &= ~UCB0RXIFG;
UCB0TXBUF = buffer[i]; // Send data
while (!(IFG2&UCB0RXIFG)); // Wait for TX to finish
}
With a 1MHz clock I guess I can complete the buffer transfer within count*8/1MHz [sec]. However, it is not what happens. I checked waveforms with a mixed signal oscilloscope and I noticed that there are dead times of about 28[us] between each 8bit transfer.
The question is: is it everything working as it should? I guess it doesn't because Figure 8 at page 20 of the CC2500 datasheet shows the timing diagram for different allowed register access types. In particular, the timing diagram for the burst access doesnt show any delay between consecutive data tranfers.
Any suggestion wil be welcome.
Thanks in advance
Gian