| 本帖最后由 穿西装的强子 于 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接口不匹配,因此还得飞线才能控制驱动芯片。。
 
   板子上没预留定时器三通道的接口,只有飞杜邦线了。
 
 
 
 
 
 |