在工程启动之前就改的化,没有影响的,但是如果在运行过程中改就有影响了,你在.cydwr中改的化,其它外设会自动去适配,比如uart,但是不一定会适配到你在24Mhz下面的波特率。主频时钟更改之后,外设时钟就会更改,是否可以找到合适的divider得到你原来配置的外设时钟,你要自己看一下。
你为什么更改时钟?你想在什么条件下更改?
你选择芯片的型号是什么?
按照我的理解,那个SPI的case不是由这个因素导致的,你的buffer开的是多少?硬件buffer是固定的,但是你可以通过软件buffer来扩充。
你可以看看你中断处理的方式。
你把你的测试工程发给我看一下
等到buffer里面存储了138个字节再读,这样就不会存在丢了字节的情况了。
你从PSoC Creator中直接找SPI的示例。如果你是主机发送138个字节你,你就把138个字节都收下来再处理。
void Slave_ISR()
{
uint8 i = 0u;
/* Sets global flag for use by background thread */
flag = 1;
set_r /* Waits for the end of the data transfer */
while (PACKET_SIZE != SPIS_SpiUartGetRxBufferSize());
/* Moves data from the Rx buffer into array */
while (0u != SPIS_SpiUartGetRxBufferSize())
{
tmpBuffer[i] = (uint8) SPIS_SpiUartReadRxData();
i++;
}
/* Clears out the Rx buffer */
SPIS_SpiUartClearRxBuffer();
/* Clears the interrupt source */
SPIS_ClearRxInterruptSource(SPIS_INTR_RX_NOT_EMPTY);
}
在工程启动之前就改的化,没有影响的,但是如果在运行过程中改就有影响了,你在.cydwr中改的化,其它外设会自动去适配,比如uart,但是不一定会适配到你在24Mhz下面的波特率。主频时钟更改之后,外设时钟就会更改,是否可以找到合适的divider得到你原来配置的外设时钟,你要自己看一下。