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

PSoC™ 4 Forum Discussions

Weeden_ding
Level 2
10 questions asked 10 sign-ins 5 questions asked
Level 2

Hi, 请问

1》函数 void Clock_1_StartEx(uint32 alignClkDiv)参数 是分频值吗?看解释好像不是,请问这个有什么用法?

2》 如果对clk分频用Clock_1_SetFractionalDividerRegister()吗?

3》现在uart要更改波特率,看communite里是接一个clk在uart module上,然后用Clock_1_SetFractionalDividerRegister分频.  假设 外部频率是12M,over sample是12, 如果要用9600波特率是不是Clock_1_SetFractionalDividerRegister(103,5)?

4》 现在UART模块CLK 为1152000HZ, over sample为12,  Clock_1_SetFractionalDividerRegister(9,0)是否可行?现在测试UART接收不正常,请问是实现方式不正确吗?还是参数不正确?  Clock_1_SetFractionalDividerRegister函数调用在uart初始化前调用是否正确?

 

 

0 Likes
1 Solution
LinglingG_46
Moderator
Moderator 750 replies posted First comment on KBA 500 replies posted
Moderator

这个函数的具体解释你看这个函数的解释就可以了。

下面我总结一下怎么改uart的波特率,如果有意见不一致的,我们可以一起讨论。
1: UART 的通讯波特率的不是由UART组件本身的某个配置寄存器决定的,而是完全取决于驱动UART组件的时钟频的率。如果你需要动态修改波特率的话,最简便的方法是拖一个 clock 组件,然后勾选 UART 组件配置窗口的 Enable Clock from Terminal 选项,然后使用这个可配置时钟来改变 UART 的波特率。至于 CLOCK 时钟如何配置,组件对应的 .C.H中有详细的 API 解释。
在UART配置好波特率和过采样率之后(选择 internal clock 模式),在系统 .cydwr-->clock tab
可以看到详细的 UART_SCBCLK 时钟配置情况,这是系统自动计算时使用的 divider 值,
所以你可以先记录下这些 divider 值然后再自行配置时直接拿来用就可以了,并不需要自己再计算一遍。
2:是的,修改uart的clock确实是用这个函数,但是这个地方的source是HFCLK,请注意。而且计算出来的值需要减去1。
3:具体怎么改,我写了一个code exmaple,放在附件里面了,9600和115200都测试过了,可以正常工作。code 是跑在psoc4245AXI-483这颗芯片上面的。

Thanks,

Lingling

View solution in original post

0 Likes
1 Reply
LinglingG_46
Moderator
Moderator 750 replies posted First comment on KBA 500 replies posted
Moderator

这个函数的具体解释你看这个函数的解释就可以了。

下面我总结一下怎么改uart的波特率,如果有意见不一致的,我们可以一起讨论。
1: UART 的通讯波特率的不是由UART组件本身的某个配置寄存器决定的,而是完全取决于驱动UART组件的时钟频的率。如果你需要动态修改波特率的话,最简便的方法是拖一个 clock 组件,然后勾选 UART 组件配置窗口的 Enable Clock from Terminal 选项,然后使用这个可配置时钟来改变 UART 的波特率。至于 CLOCK 时钟如何配置,组件对应的 .C.H中有详细的 API 解释。
在UART配置好波特率和过采样率之后(选择 internal clock 模式),在系统 .cydwr-->clock tab
可以看到详细的 UART_SCBCLK 时钟配置情况,这是系统自动计算时使用的 divider 值,
所以你可以先记录下这些 divider 值然后再自行配置时直接拿来用就可以了,并不需要自己再计算一遍。
2:是的,修改uart的clock确实是用这个函数,但是这个地方的source是HFCLK,请注意。而且计算出来的值需要减去1。
3:具体怎么改,我写了一个code exmaple,放在附件里面了,9600和115200都测试过了,可以正常工作。code 是跑在psoc4245AXI-483这颗芯片上面的。

Thanks,

Lingling

0 Likes