Announcements

Ever wondered how you could shape the future in collaboration with others? Join us at OktoberTech Asia Pacific and get inspired. Click here to sign up FREE of charge.

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