period
Command:
echo PWM_ID period > group_period
In our driver implementation, xxxx indicates output frequency
ex: echo 0 2000 > group_period # PWM0 will generate 2KHz waveform
begin
Command:
echo PWM_ID begin > group_begin
ex: echo 0 10 > group_begin # PWM0 will generate duty_cycle starting from 10% of the period
......
Mode 0 (keep pwm state)
在拉 hold 期间更改设定,且 pwm 值保持原始
Mode 1 (pull low)
在拉 hold 期间更改设定,但 pwm 值数完最后一个 period 后会拉 low
Hold 0 会有 interrupt, 这个 interrupt 是下了 hold 0 之后, 这个 period 结束, HW 会发 interrupt,
然后 driver 在 ISR 里头填新的参数, 取消 hold 0, 然后 PWM 就会产生新的参数的波型了
所以操作应该是这样
红色代表是 AP(客户) 的操作
蓝色代表是 Driver 的操作
绿色代表是 HW 的行为
填参数→enable 之后, 以下分成 hold 0/1 来解释
1. Hold 0
A. 下新的参数 (驱动先把新的参数放在内存中) →打开hold 0→一个period结束/保持最后波型→( ISR ) 驱动从内存把参数回填 PWM/放开 hold 0→产生新的波型
2. Hold 1
A. 打开 Hold 1 →一个 period 结束/波形拉低→ (AP 确定 period 结束) 下新的参数→放开 Hold 1→产生新的波形