This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/TMS570LC4357:TMS570LC4357

Guru**** 2531950 points
Other Parts Discussed in Thread: TMS570LC4357, UNIFLASH, HALCOGEN

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/916204/ccs-tms570lc4357-tms570lc4357

器件型号:TMS570LC4357
主题中讨论的其他器件: UNIFLASHHALCOGEN

工具/软件:Code Composer Studio

你好

需要将哪个文件加载到 TMS570lc4357控制器以驱动电磁阀类型的机械设备、如泵、喷油器等... hex 文件或 bin 文件。

请就此作出答复。

谢谢您、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    TI CCS IDE 可以生成 ELF 格式的*。out 文件、十六进制文件(Motorola 格式、Intel 格式、TI 格式和 ASCII 文本)和二进制文件。  

    TI CCS Uniflash 可以将上述所有格式加载到 TI MCU 的闪存中。 Uniflash 具有 GUI、命令行和脚本接口。 CCS Uniflash 免费提供。

    https://www.ti.com/tool/UNIFLASH

    电磁阀内部有一个线圈。 通电后、它会将活塞拉入其中、断电后、它会将活塞推回到上一个位置。  使用 PWM 控制电磁阀是可行的。 可以对 TMS570LC43x 器件上的 ePWM 模块和 N2HET 模块进行编程、以生成具有指定周期和占空比的 PWM 信号。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、先生、

    当我向步进电机发送 PWM 信号时… 信号由电机接收、并显示如下错误:

     20次尝试后无法确定目标状态

    我是否可以知道解决这个问题的方法...如何解决这个问题?

    谢谢您、

    Shivakumar  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    不知道错误消息的含义。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的先生:

    我可以使用以下提到的代码来控制传动器吗?

    我是否可以使用下面提到的代码来计算齿轮(触发轮)上的齿数?

    如果不是,请提供一个示例代码来计算相同的....

    代码:

    int main (空)

    /*用户代码开始(3)*/

    /*启用 CPU IRQ 中断*/
    _enable_interrupt_();

    /*根据 HalCoGen 设置初始化 NHET1 */
    hetInit();

    #if 0 /* RTI 的目的是在恒定速度、加速度和之间更改速度模式
    和减速自动*/
    /*初始化 RTI 驱动程序*/
    rtiInit();
    /*启用 RTI 比较0中断通知*/
    rtiEnableNotification (rtiNOTIFICATION_COMPARE0);
    /*启动 RTI 计数器块0 */

    /**-设置比较0值。 此值与选定的自由运行计数器进行比较。 *
    rtiREG1->CMP[0U].Compx *=持续时间;

    /**-安装程序更新比较0值。 该值将添加到每个比较匹配的比较0值中。 *
    rtiREG1->CMP[0U].UCPx *=持续时间;
    rtiStartCounter (rtiCOUNTER_BLOCK0);

    #endif

    /*初始化 HWAG */
    hwagInit();

    hwagREG1->HWATHNB = 57;//一个60-2齿轮的齿总数
    hwagREG1->HWASTWD = 4;//步长宽度= 64
    hwagREG1->HWAGCR2 = 0x00010001;//启动 HWAG 并启用关键搜索
    hwagREG1->HWAENASET = 0x10;//启用 PCNT (n)> 2 x PCNT (n-1)中断,启用未找到的单一性中断

    /*根据宏设置配置 NHET1的其他设置*/
    configNHET1();

    while (1);

    /*用户代码结束*/


    /*用户代码开始(4)*/

    /*
    *只要一个 PWM 周期、NHET1 CNT 指令就会生成中断
    *已完成
    *
    uint32索引= 0;
    uint32 heel_spin_count = 0;

    void hetNotification (hetBASE-t * het、uint32偏移)

    uint32 cnt_max_period=0;

    /*速度= 0:恒定速度
    *速度= 1:减速
    *速度= 2:加速度
    *当前速度变量硬编码为一种特定模式。 速度值
    *将在 rtiNotification 中根据 RTI 中断确定。
    *
    速度= 0;

    如果(速度= 0){
    CNT_max_period = hetRAM1->Instruction [Phet_L03_0].Control;
    }否则,如果(速度==1){
    CNT_MAX_PERIOD =(uint32)(hetRAM1->Instruction [Phet_L03_0].Control *(1 + DEC_RATE));
    }否则{
    CNT_MAX_PERIOD =(uint32)(hetRAM1->Instruction [Phet_L03_0].Control *(1 - ACC_RATE));

    if (cnt_max_period > CNT_MAX_Bound){
    CNT_max_period = CNT_MAX_Bound;

    if (cnt_max_period < CNT_min_bound){
    CNT_max_period = CNT_min_bound;

    if ((het =hetREG1)&& offset ==(Phet_L01_0+1))

    如果(索引==59)

    索引= 0;
    Wheel_spin_count++;
    hetRAM1->Instruction [Phet_L03_0].Control =(uint32) cnt_max_period * 3 + 0;
    }否则(((索引= 1)&&(WHEEL_SPIN_COUNT > 0))

    hetRAM1->Instruction [Phet_L03_0].Control =(uint32)(cnt_max_period / 3);
    }否则

    hetRAM1->Instruction [Phet_L03_0].Control =(uint32) cnt_max_period;

    索引++;

    /*将50%占空比加载到 NHET 程序*/
    hetRAM1->Instruction [Phet_L01_0].Data = cnt_max_period << 6;// cnt_max_period * 128/2


    uint32 hwag_int_count = 0;
    void hwagnotification (hwagbase_t * hwag、uint32偏移)

    hwag_int_count++;

    如果((hwag ==hwagREG1)&& offset == 5){//PCNT (n)> 2 x PCNT (n-1)
    gioSetBit (hetPORT1、12、1);//在进入中断时设置 NHET1[12]以进行调试观察

    hwagREG1->HWAGCR2 = 0x00010000;//禁用 HWAG 运行

    hwagREG1->HWAACNT = 0;//重置 ACNT
    hwagREG1->HWATHVL = 0;//重置齿数
    hetRAM1->Instruction [Phet_L04_0].Data = 0;//在角度模式中复位 NHET CNT 数据字段
    // hwagREG1->HWAENACLR = 0x10;//禁用 PCNT (n)> 2 x PCNT (n-1)中断
    hwagREG1->HWAGCR2 = 0x00010001;//启动 HWAG

    uint32 i;
    对于(i=0;i<100;i++);
    gioSetBit (hetPORT1、12、0);//在退出中断时清除 NHET1[12]以进行调试观察

    /* configureNHET1将选定的 NHET1引脚配置为输出 PWM。 它
    *还将初始 PWM 周期和占空比加载到 NHET1中
    * RAM
    *
    void configNHET1()

    /*将选定的引脚设置为输出。 *
    hetREG1->DIR =(1 << NHET1_PIN_PWM)|(1 << NHET1_FANT_WHET)|(1 << 12);// pin12用于观察中断

    hetREG1->INTENAS =(1 << Phet_L01_0);

    /*根据定义的宏将 PWM 周期加载到 CNT 指令中*/
    hetRAM1->Instruction [Phet_L03_0].Control =(uint32)(CNT_MAX_PERIOD)|(hetRAM1->Instruction [Phet_L03_0].Control & 0xFFFD0000);

    /*配置引脚编号以输出 PWM */
    hetRAM1->Instruction [Phet_L01_0].Control =(hetRAM1->Instruction [Phet_L01_0].Control & 0xFFFFE0FF)|(NHET1_FANT_WHEEL<< 8);

    /*将50%占空比加载到 NHET 程序*/
    hetRAM1->Instruction [Phet_L01_0].Data = CNT_MAX_PERIOD * 128 / 2;

    uint32计数= 0;
    void rtiNotification (rtibase_t * rtiREG、uint32通知)

    速度=计数% 3;
    count++;

    /*用户代码结束*/

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您是否已解决问题? 我没有使用 HWAG 的经验、因此很抱歉、我对您的代码没有深入了解。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的先生:

     主席先生,这项工作仍在进行中。

    从上面的编码中、我需要在每次锯齿轮旋转时达到索引= 58/59后获得信号。  

    请提供任何备选示例。

    谢谢您、

    Shivakumar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我没有硬件可以进行 HWAG 测试。