本帖最后由 穿西装的强子 于 2025-6-13 23:09 编辑
发现个问题,timer4配置10k的PWM时,按workbench进行配置
按手册上tmr4的时钟源是APB1是180MHz,按以上的分频系数生成10K的PWM,但是实际上PWM的频率只有5KHZ。
下面是改了分频系数,减半之后输出为10KHz,这个不知道是什么情况导致的。
/* configure counter settings */
tmr_cnt_dir_set(TMR4, TMR_COUNT_TWO_WAY_1);
tmr_clock_source_div_set(TMR4, TMR_CLOCK_DIV1);
tmr_period_buffer_enable(TMR4, FALSE);
tmr_base_init(TMR4, 999, 8);
在移植好foc后进行检验,在仿真后观看foc运行时间
t1 = 0.000257 = 257us
这个时间已经超过了10khz的周期,因此需要继续优化
使用-o2优化后时间有改善
t1 = 0.0001623 = 162.3us
已经有很大的优化了,还需要更进一步的优化。
不知道为什么foc运算会占用这么多时间,有些是加法和乘法,也很占用时间。
后续会进一步优化foc运算时间,保证在100us以内。------------------------------ 后续 -------------------------------------------
这块测试的时间有问题,没配置对,在debug的时候要将该时钟按自己芯片的主频来处理,不然计算的时间不准
用一个延时函数进行验证,时间比较准了,然后再测试foc的时间
t1 = 0.00001513s = 15.13ns了完全能满足要求
明后2天将继续验证foc控制算法,现在使用的simple的驱动板,完全能满足foc控制的需求,还有个问题是驱动板虽然是ardunio的接口,但是pwm接口不匹配,因此还得飞线才能控制驱动芯片。。
板子上没预留定时器三通道的接口,只有飞杜邦线了。
|