STC8H规格书PWMB的描述错误
本帖最后由 weilan 于 2024-4-8 10:29 编辑菜鸟一枚,最近需要使用STC8H1K17T的PWMB测量输入PWM波形的高电平时间。
在20240202版本的STC8H数据手册中,第1064页有对从模式控制器的描述。如图所示:
图中显示TI6FP6可被设置为触发源(TRGI)。但是在手册第1103页,从模式的触发源只能
设置为TI5FP5和TI5FP6,如下图。
两者是冲突的。实际实验后发现是后者出错。相关的初始化和中断代码如下:
u8 dshot_packet; // 存储dshot协议中传输的16位占空比数据
u16 dshot_packet_idx = 0;
bit dshot_ready = 0;
void pwmb_init()
{
PWMB_PS = 0x04; // 使能输入脚为PWM6 -> P5.4
SET_BIT(P5M1, 4);
RESET_BIT(P5M0, 4);
PWMB_CCER1 = 0x00; // 关闭所有输出通道
PWMB_CCMR1 = 0x02; // 配置PWM5为输入模式,IC5映射到TI6FP5上,进入CC5
PWMB_CCMR2 = 0x01; // 配置PWM5为输入模式,IC6映射到TI5FP6上,进入CC6
PWMB_CCER1 = 0x13; // 使能CC5/CC6输入捕获,CC6捕获上升沿,CC5捕获下降沿
PWMB_PSCRH = 0x00;
PWMB_PSCRL = 0x00;
PWMB_IER = 0x02; // 使能CC5中断
PWMB_CCR6 = 0;
PWMB_SMCR= 0x64; // 从模式触发源为TI6FP6,触发模式为复位模式
PWMB_CR1 = 0x01;
}
void pwmb_isr() PWMB_VECTOR
{
if( PWMB_SR1 & 0x02 ) // CC5中断,接收DSHOT数据包
{
PWMB_SR1 &= ~0x02;
dshot_packet = PWMB_CCR5;
if( dshot_packet_idx >= 16 )
{
dshot_packet_idx = 0;
dshot_ready = 1;
}
}
}
此外,第1111页最后一行红字的PWM5_CCER1应当为PWMB_CCER1。
收到,马上反馈给我同事 编码器模式设置参考后面的SMSA/SMSB介绍
PWM5_CCER1应该是笔误,后续版本进行修改。 乘风飞扬 发表于 2024-4-7 09:33
编码器模式设置参考后面的SMSA/SMSB介绍
PWM5_CCER1应该是笔误,后续版本进行修改。 ...
您好,不是编码器模式,而是触发源选择TSB中,说明触发源TRGI可以选择为TI5FP5和TI5FP6,而框图中却是TI5FP5和TI6FP6。可以看我1楼红箭头标出来的路线。至于编码器模式,我没有实际进行测试。
页:
[1]