Skip to content
This repository has been archived by the owner on Jan 20, 2024. It is now read-only.

關於v831 pwm輸出頻率 #31

Open
akioolin opened this issue Jan 19, 2022 · 4 comments
Open

關於v831 pwm輸出頻率 #31

akioolin opened this issue Jan 19, 2022 · 4 comments

Comments

@akioolin
Copy link

akioolin commented Jan 19, 2022

Hi, Sir:

最近入手sipeed maix ii dock, v831,試著使用板子上的3路pwm驅動遙控車
常使用的servo。該種servo的pwm頻率是50Hz。pwm產生為使用maixpy3的pwm
類別,使用示波器量測信號,最靠近的頻率是61Hz,無法再低。

maix ii dock上燒錄的映像檔版本是maixpy3-0.3.5_MaixII-Dock_20211216.img。

附件圖檔中的程式碼是用來測試pwm頻率的設定方式。
15443815005377

excel檔案是紀錄不同period設定量到的pwm頻率。
v831_pwm.xlsx

波形圖檔如下。使用FNIRSI 1013D示波器量測到的波形。
7

請問maixpy3對v831的pwm類別,要怎麼設定才能產生50Hz的pwm信號?
感謝您。

BR, Akio

@junhuanchen
Copy link
Contributor

最新的文档已经更新啦,来check一下。

https://wiki.sipeed.com/soft/maixpy3/zh/usage/hardware/PWM.html

我这边还没有开始验证和测试具体的波形数据,需要结合数据手册确认一下。

数据手册在这里 https://linux-sunxi.org/images/b/b9/V833%EF%BC%8FV831_Datasheet_V1.0.pdf ,我这几天 2022年01月20日-2022年01月24日 在陆续更新 wiki ,所以暂时没有办法帮你验证。

也许这是个问题,因为我这里单纯测试了一下手边的一个舵机。

@akioolin
Copy link
Author

Hi, @junhuanchen :

非常感謝您提供更新版本的訊息。手邊的SD內的maixpy3需要更新。等更
新後,再來更新相關波形資料。

驗證可等您手邊的工作沒那麼緊張再來看看。我手邊看到的是波形頻率最低
只能到61Hz。

根據linux pwm driver source code中config函式中的內容,可參考以下連結。
https://github.com/Tina-V833/linux-4.9/blob/fbf240beb4223925e3ef0b17593ffa88cf37eb8d/drivers/pwm/pwm-sunxi-group.c

當period超過334ns後,pwm的clock似乎就被設定為24MHz。接著是一連串的
神奇操作,關於設定pre-scaler以及cycles數。這些動作需要花點時間了解。

請教pwm相關操作函式是要看single還是dual版本?

BR, Akio

@akioolin
Copy link
Author

akioolin commented Jan 26, 2022

Hi, @junhuanchen

經過一些嘗試後,終於找到一個很快速的修正輸出pwm頻率的方式。
測試程式碼請參考附件的pwm_demo.txt檔案。
pwm_demo.txt

輸出波形圖請參考附件的圖檔。波形圖檔有點跑掉,請包涵。
pwm

要達到輸出想要的pwm頻率,可以從PCR的16bit counter回推。
假設PWM頻率為100,16bit counter設定為60000,100 * 60000 = 6000000, 6MHz。
亦即從PCCR決定clock source,之後使用PCCR及PCR推敲合適的除頻係數。

從pwm-sunxi-group.c驅動程式來看,似乎PCCR及PCR的設定跟實際輸出有落差。

可以多試幾種組合,看看實際輸出跟預期的差別。

BR, Akio

@junhuanchen
Copy link
Contributor

感谢!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants