Part Number:TPIC2060A
现在能通过DSP STM C6678 (1G) IC单核主程序中采用10M SPI 数据传输率,控制主轴线圈数据( 0x8324 ),主轴电机可以工作。
IC说明书中,介绍REG7F中BIT0位FG signal.Spindle rotaion *** for speed monitor。在0x8324数据控制下, FG信号在示波器频率2.9684KHz(336us),而我在DSP主程序不停读取REG7F不停的变化。
咨询如下问题:
1.能通过读取REG7F的FG变化频率,进行主轴的控速吗?
2.DSP 芯片1GHZ频率下工作,理论一条指令运行速度1ns.加上SPI (10M)的8bit传输读取 ・・・ (8+2)・100ns=1us,理论读取336/(1*2)=168个高点平或168低电平。而仿真状态下读取REG7的FG(BIT0)在不停跳变。这样计算对吗?如果不对应该怎么计算?
Annie Liu:
由于问题比较复杂,我需要询问更了解这款芯片的TI资深工程师,再为您解答,一旦得到回复会立即回复给您。
,
XING CUI:
Annie Liu :
非常感谢你的回复.
另外,现在我们电气原理图中驱动电机IC(TPIC2060)的FG管脚,通过电压转换后连接到DSP的GPIO管脚。 我这边同时尝试了在DSP C6678 的主程序中使用了循环结构通过不停读取GPIO检测FG的状态。在示波器看FG信号周期是694us ,半周期347us.
现在GPIO外设读取速度应该PLL下应该是主频率/6(166ns),理论上(347*1000)/166=2090,GPIO读取的结果应该有连续的1或连续0,但是同通过打印输出GPIO状态发现不停没有规律的不停跳变。
调试中,GPIO读取FG信号状态输出LOG如下:
SPI_TPIC2060A_FGRegStatus = 0x0
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x0
SPI_TPIC2060A_FGRegStatus = 0x0
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x0
SPI_TPIC2060A_FGRegStatus = 0x0
SPI_TPIC2060A_FGRegStatus = 0x0
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x0
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x0
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x0
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x0
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x0
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x0
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x0
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x0
SPI_TPIC2060A_FGRegStatus = 0x0
SPI_TPIC2060A_FGRegStatus = 0x0
SPI_TPIC2060A_FGRegStatus = 0x0
SPI_TPIC2060A_FGRegStatus = 0x1
1.咨询下,我上面理解正确吗?
2.如果SPI 和串口都能工作,能说明PLL下SYSCLK7的正常的吗?
,
XING CUI:
在仿真的状态下,在刷新的状态下观察了GPIO 的bank_register_in_data 位的与打印LOG的GPIO状态差不多。现在有可能是仿真的原因吗?仿真的器在PC的刷新变化率低于FG的信号变化周期的原因吗?
,
Cherry Zhou:
Hi,
XING CUI 说:1.能通过读取REG7F的FG变化频率,进行主轴的控速吗?
是的,主轴速度(FG)可在bit0、REG7F 处监控。
XING CUI 说:2.DSP 芯片1GHZ频率下工作,理论一条指令运行速度1ns.加上SPI (10M)的8bit传输读取 ・・・ (8+2)・100ns=1us,理论读取336/(1*2)=168个高点平或168低电平。而仿真状态下读取REG7的FG(BIT0)在不停跳变。这样计算对吗?如果不对应该怎么计算?
串行通信需要16个时钟,一次通信为1.6us。
您可以通过示波器监控 XFG (引脚12上的信号),通过XFG您可以确认实际的 FG 信号并与 Bit0/REG7Fh 进行比较。
,
XING CUI:
hi,Cherry Zhou:
串行通信需要16个时钟,一次通信为1.6us。
在10M频率控制下,一次通信时间1.6us。如果连续取REG装tia,等于采样周期1.6us。同时 ,我在示波器上看FG的周期694us,半周期是一半347us,信号在示波器下显示的周期也很稳定。这样按照347/1.6=216次,读取FG状态会出现连续高电平或低电平。但是我在仿真器状态下,在PC的窗口察看LOG信息读取寄存器FG状态变化很速度,没有连续的高或低信号的状态。DSP也通过GPIO读取FG输出信号,现象也是类似的。
SPI_TPIC2060A_FGRegStatus = 0x0
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x0
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x0
SPI_TPIC2060A_FGRegStatus = 0x1
SPI_TPIC2060A_FGRegStatus = 0x0
SPI_TPIC2060A_FGRegStatus = 0x0
SPI_TPIC2060A_FGRegStatus = 0x0
SPI_TPIC2060A_FGRegStatus = 0x0
SPI_TPIC2060A_FGRegStatus = 0x1
,
Cherry Zhou:
Hi,
如果该位为0,您能否将其设置为如下值:
REG64, Bit3 = 1
Thanks
,
XING CUI:
上面是测试中:初始化时,相关寄存器写入值。其中REG64写入0X08就是BIT3设置为1。
设置后,进行了所有寄存器的读取如下:
其中reg74有时候读取数值为41(0100 0001);有时候01 , bit6 MONITOR event flag指向REG7D(0X40) 的bit6是XRSTIN_DET(XRSTIN event flag 1=Detect low event in XRSTIN pin) 此引脚,测试中通过DSP GPIO先进行拉高(通讯中一直保持),后进行相关寄存器的读写。不知道TPIC2060为何报错吗?
,
XING CUI:
过去没有做过嵌入式,对实时采集没有任何经验。想咨询下:
1、如在单核系统下,如果在主程序中采用循环方式采集FG信号,需要考虑每次程序的运行时间。如果计算出每次循环执行时间,是否就是每次采样的时间。
2、如果采集的程序放到中断中,每次采样时间等于中断时间加读取FG的时间为采样周期吗?
3、根据采样周期下,进行FG的脉冲计数,从而判断主轴的转速计算?
,
Cherry Zhou:
已跟进给工程师,应该会在下周的工作日给到您答复。
,
Cherry Zhou:
Hi,
REG74 Bit6是保留位,未分配任何内容。 请不要更改该bit。 当 XRSTIN 被下拉时,REG7D Bit 6被置位。 (Reset input)。 如果该位为1,则表示 DSP 复位 TPIC2060A。
很抱歉工程师无法为有关 DSP 程序和中断例程的问题提供帮助,因为他并不熟悉DSP 的相关信息。
对于问题3),TPIC2060AS 不会计算 FG 脉冲来计算速度,TPIC2060AS 会检测经滤波的 FG 信号来确定驱动下一个相位的时序。 DSP 需要计算速度并更改 VSPM DAC 值以调整速度。
该问题看起来像是寄存器值读取不正确或发生了意外 XRSTIN。
请问主轴电机是否按预期旋转? 其他的电机驱动器呢? 是否可以正常工作?
Thanks
,
XING CUI:
非常感谢你的回复。
REG74 Bit6是保留位,未分配任何内容。
上次REG74 的寄存器状态描述错了,写入0x20,启动了STAUS_ON_VFCS功能。上电寄存器读取也是0x20,前期应该自己看错了。
更改 VSPM DAC 值以调整速度。
如果 DAC 值越大,主轴转速越快,FG的信号周期短吧?但是 DAC 值写入0X324时,示波器下测量FG周期是694us,信号周期很稳定并且较长。但是固定采样周期读取FG寄存器变化特别快,也没有任何规律可寻。
该问题看起来像是寄存器值读取不正确或发生了意外 XRSTIN。
现在读取寄存器7E Version 一直是0X11,并且自己写入寄存器数据能够正常读取。意外 XRSTIN,观察寄存器7D是0X00状态,基本排除了。
请问主轴电机是否按预期旋转? 其他的电机驱动器呢? 是否可以正常工作?
现在主轴速度根据VSPM DAC 数据大小正比例关系,SLED电机也可以全步正常运行。
,
XING CUI:
补充下:
该问题看起来像是寄存器值读取不正确或发生了意外 XRSTIN。
现在读取寄存器7E Version 一直是0X11,并且自己写入寄存器数据能够正常读取。意外 XRSTIN:观察寄存器7D是0X00状态,基本排除了。但是出现很奇怪现象,同样程序一次运行读取REG0X7D就是0x40,重新加载程序再运行,就读到0x00。
,
XING CUI:
TPIC2060AS 不会计算 FG 脉冲来计算速度,TPIC2060AS 会检测经滤波的 FG 信号来确定驱动下一个相位的时序。 DSP 需要计算速度并更改 VSPM DAC 值以调整速度。
关于此问题,还想请教下:TPIC2060芯片的FG管脚输出电平是否与FG寄存器读出来数据一致吗?
1.TPIC2060AS的主轴时序控制,本身是开怀控制对吗?内部不会根据FG信号改变 VSPM DAC 值以调整速度,而需要DSP读取FG数据进行数据更新。
2.现在在示波器下观察FG信号是周期性方波信号,自己理解是VSPM DAC的数据越大FG变化周期越小,主轴转速越快。 设计设想是:程序中通过高速周期采集FG信号高低电平进行计数,来计算上升时间和下降时间和占空比,从而来计算主轴转速,进行快速的转速调整,速度在一定范围内后进行相位调整。现在困惑是:程序高速采样率,在相同 VSPM DAC 值下,采集FG电平的占空比变化与示波器显示不一致。通过读取FG信号,进行周期计数,来换算FG的周期方法是正确吗?
,
Cherry Zhou:
Hi,
已反馈给工程师。英文论坛的链接也给您贴在下面:
https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1291514/tpic2060a-fg-signal-speed-measurement-issue
由于这一周为国外的感恩节假期,给到您答复的时间可能会有所延迟,敬请谅解。
Thanks
,
Cherry Zhou:
Hi,
很抱歉回复晚了。
即使 VSPM DAC 没有变化,主轴电机转速也会发生变化(温度、电源电压等也会发生变化),DSP 需要监控 FG 信号以在目标转速下调节转速。
关于 FG 位,您试下在主轴电机达到目标速度后尝试 REG75 bit0 (SPM_HIZMODE=1)并读取 FG 位吗?
如果输出为高阻态,可以消除主轴驱动器噪声。
Thanks