在使用 lpc55s69_nxp_evk 開(kāi)發(fā)板對(duì)接 rtduino 的過(guò)程,對(duì)接 PWM 部分的時(shí)候,遇到了不少坑,在此記錄。
BSP 中 driver 的問(wèn)題
由于調(diào)用的 SDK 版本問(wèn)題,kCLOCK_CTimer 需要更改為 kCLOCK_Timer,這個(gè)問(wèn)題在與定時(shí)器相關(guān)的 drv_hwtimer 文件中同樣存在。
同樣因?yàn)?SDK 的版本問(wèn)題,CTIMER_SetupPwmPeriod 函數(shù)增加了一個(gè)參數(shù)
/*!
- brief Configures the PWM signal parameters.
- Enables PWM mode on the match channel passed in and will then setup the match value
- and other match parameters to generate a PWM signal.
- This function can manually assign the specified channel to set the PWM cycle.
- note When setting PWM output from multiple output pins, all should use the same PWM
- period
- param base Ctimer peripheral base address
- param pwmPeriodChannel Specify the channel to control the PWM period
- param matchChannel Match pin to be used to output the PWM signal
- param pwmPeriod PWM period match value
- param pulsePeriod Pulse width match value
- param enableInt Enable interrupt when the timer value reaches the match value of the PWM pulse,
if it is 0 then no interrupt will be generated.
- return kStatus_Success on success
kStatus_Fail If matchChannel is equal to pwmPeriodChannel; this channel is reserved to set the PWM period
*/
status_t CTIMER_SetupPwmPeriod(CTIMER_Type *base,
const ctimer_match_t pwmPeriodChannel,
ctimer_match_t matchChannel,
uint32_t pwmPeriod,
uint32_t pulsePeriod,
bool enableInt)
新增的 param pwmPeriodChannel 指定一個(gè)定時(shí)器的通道控制 PWM 的 Period ,需要注意的是,其中提示:當(dāng)使用一個(gè)定時(shí)器的多個(gè)通道輸出 PWM 時(shí),其 Period 均是一致的。
通過(guò)對(duì)比之前版本的 SDK ,了解到之前是使用 kCTIMER_Match_3 通道作為 pwmPeriodChannel 。因此,在對(duì)應(yīng)的參數(shù)位置填入 kCTIMER_Match_3 。
引腳配置問(wèn)題
解決上述的那些問(wèn)題之后,就已經(jīng)可以正常使用 PWM 了。但是在對(duì)接 RTduino 的過(guò)程中又出現(xiàn)了新的問(wèn)題。
在 RTduino 框架下一直不能正常使用 PWM 功能,最后發(fā)現(xiàn),是需要將引腳配置為對(duì)應(yīng)的功能,具體對(duì)應(yīng)到的是 RT-Threadrtthreadbsplpc55sxxlpc55s69_nxp_evkboardMCUX_Configboardpin_mux 相關(guān)文件,可以通過(guò) NXP 官方工具進(jìn)行配置 MCUXpresso Config Tools
修改引腳功能后,rtduino 框架下的 PWM 還是對(duì)接不上,debug 發(fā)現(xiàn)在 drv_pwm 中定時(shí)器2對(duì)應(yīng)的是 pwm1 ,而 RT-Thread 的設(shè)備框架下應(yīng)該對(duì)應(yīng)的是 pwm2 ,導(dǎo)致識(shí)別不到。于是將 drv_pwm 中定時(shí)器2改為 pwm2 ,呼吸燈正常。
之后優(yōu)化的方向
使用 bsp 時(shí)注意到,drv_pwm 中只考慮了定時(shí)器2一種情況,并且只有一個(gè)通道。接下來(lái)需要對(duì) PWM 設(shè)備進(jìn)一步的抽象,更好的對(duì)接到 RT-Thread 的設(shè)備框架下。
-
LPC
+關(guān)注
關(guān)注
8文章
136瀏覽量
77638 -
定時(shí)器
+關(guān)注
關(guān)注
23文章
3248瀏覽量
114792 -
RT-Thread
+關(guān)注
關(guān)注
31文章
1289瀏覽量
40124 -
PWM輸出
+關(guān)注
關(guān)注
1文章
66瀏覽量
5140
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論