更改IMO时钟的影响

公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Lin_Qiang
Level 4
Level 4
5 likes given First like given 50 replies posted

想问一下我把IMO从24MHz变为32MHz,HFClk和SysClk时钟也都是从24MHz变为32MHz,这样变更有问题吗,变更后会影响到哪些外设功能呢,比如说cyc时钟,adc,spi,处理时间之类的。

0 点赞
1 解答
LinglingG_46
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 10 questions asked

在工程启动之前就改的化,没有影响的,但是如果在运行过程中改就有影响了,你在.cydwr中改的化,其它外设会自动去适配,比如uart,但是不一定会适配到你在24Mhz下面的波特率。主频时钟更改之后,外设时钟就会更改,是否可以找到合适的divider得到你原来配置的外设时钟,你要自己看一下。

在原帖中查看解决方案

0 点赞
9 回复数
LinglingG_46
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 10 questions asked

你为什么更改时钟?你想在什么条件下更改?

0 点赞
Lin_Qiang
Level 4
Level 4
5 likes given First like given 50 replies posted

Li_Qiang_0-1615865598963.png

 

Li_Qiang_1-1615865627679.png

我只是想把系统时钟增大,让处理速度变得快一些,没有特别的需求。

0 点赞
LinglingG_46
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 10 questions asked

你选择芯片的型号是什么?

按照我的理解,那个SPI的case不是由这个因素导致的,你的buffer开的是多少?硬件buffer是固定的,但是你可以通过软件buffer来扩充。

你可以看看你中断处理的方式。

0 点赞
Lin_Qiang
Level 4
Level 4
5 likes given First like given 50 replies posted

芯片型号是CY8C4146LQS-S423,buff开的是138,这个有可能是中断处理时间过长影响的吗?因为我确实只是改了一下时钟就可以了。

0 点赞
Lin_Qiang
Level 4
Level 4
5 likes given First like given 50 replies posted

我设置SPI的通信速率是2MHz,通信buff设置成138,而且在Master发送数据的同时Slave就要给出有效数据,请问您那有类似可以参考的例程吗?

0 点赞
LinglingG_46
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 10 questions asked

你把你的测试工程发给我看一下

0 点赞
LinglingG_46
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 10 questions asked

等到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);

}

 

0 点赞
Lin_Qiang
Level 4
Level 4
5 likes given First like given 50 replies posted

IMO这个时钟即使我把它从24MHz改成36MHz,对功能外设会有什么影响吗?我理解应该只有单步的处理速度变快了吧,外设都在组件中设置的,时钟即使改了也会自动生成匹配?

0 点赞
LinglingG_46
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 10 questions asked

在工程启动之前就改的化,没有影响的,但是如果在运行过程中改就有影响了,你在.cydwr中改的化,其它外设会自动去适配,比如uart,但是不一定会适配到你在24Mhz下面的波特率。主频时钟更改之后,外设时钟就会更改,是否可以找到合适的divider得到你原来配置的外设时钟,你要自己看一下。

0 点赞