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.

ucd3138

Other Parts Discussed in Thread: UCD3138

我想用 ucd3138 做一个电源  pfc+pwm可控调压+pwm 20khz 占空比 20% 输出

下载了Fusion Design Offline软件,阅读了Isolated Fusion GUI User Guide[1].pdf。

问题:

1、没有我要的拓扑:pfc+pwm可控调压+pwm 20khz 占空比 20% 输出

2、Fusion Design Offline软件Firmware Download Tool的功不能用。

3、Fusion Design Offline软件你,配置完成,程序是不是就自动生成了。

4、是不是还需要头文件,boost或则另外的文件。

5、是不是还有保密的x0文件

6、总之,都要有哪些软件、硬件才可以动手做。

数字电源我认为这款是功能比较完善的,尤其是有Power Stage Designer Tool 2.1.exe的支持。


 

  • 您好,

    Fusion design offiline 软件的功能有限,只能够使用软件所提供的电路进行仿真。不能进行FW 下载,同时软件的online 版和offline版都不能自动生成程序, 通过使用软件进行参数调试后,需要将优化后的参数从新放入代码中编译,生成X0文件下载。

    建议您可以申请一块UCD3138的EVM,使用fusion Design online版本进行调试。同时TI 也提供了一些基本测试的软件代码, 可以从下面的链接中找到相关信息

    http://www.ti.com/product/ucd3138

  • Jessica LI

    非常感谢你的说明,因为我是新手,可能问得有些外行。

    http://www.ti.com/product/ucd3138

    上的文件我都大概浏览了一遍,感觉也是:Fusion design offiline 软件的功能有限,只能够使用软件所提供的电路进行仿真。

    仿真输出的是xml文件,其中引用了UCD3000ISO1。不知是不是fw的文件名。

    在D:\Program Files\Texas Instruments Fusion API\Samples\Microsoft.NET\ConsoleSample1中有二十多个cs文件

    其中有UCD31XXRegisters.cs,UCD30XXRegisters.cs。。。

    这些是不是fw文件

    using System;
    using System.Collections.Generic;
    using System.Text;
    using TIDP.PMBus.MemoryMaps;
    using TIDP.PMBus.Parts.UCD3000;
    using Com.Muegel;

    namespace ConsoleSample1
    {
        /// <summary>
        /// This example shows how to peek/poke low-level IC registers from ROM or
        /// program mode. All API calls throw an exception on error, so there are
        /// no status return values to check.
        /// </summary>
        public static class UCD31XXRegisters
        {
            public static void Test()
            {
                // Automatic bootstrap mode: finds SAA adapter and looks for ROM then program
                var api = new UCD31XXRegistersEasyMemoryMap();

                // Listen for low-level driver read/write events
                api.Memory_Driver.ReadMemory += new EventHandler<TIDP.Memory.ReadMemoryEventArgs>(Memory_Driver_ReadMemory);
                api.Memory_Driver.WroteMemory += new EventHandler<TIDP.Memory.WroteMemoryEventArgs>(Memory_Driver_WroteMemory);

                // The "ToString()" method of each memory node prints out the read/write status
                // UARTTXBUF below is equivalent to UARTTXBUF.ToString(). At this point no
                // read has been done. "?" is used to represent a "null" byte: not read
                // or written yet.
                ConsoleApp.WriteLine("Inspecting API state of Uart0Regs.UARTTXBUF ...");
                ConsoleApp.WriteLine(api.Variables.Uart0Regs.UARTTXBUF);

                // Read_Flash() reads memory for a node and all child nodes (memory locations).
                // For example, api.Variables.Uart0Regs.Read_Flash() will read 56 bytes starting
                // at address 0xFFF7D800.
                ConsoleApp.WriteLine();
                ConsoleApp.WriteLine("Calling Uart0Regs.UARTTXBUF.Read() ...");
                api.Variables.Uart0Regs.UARTTXBUF.Read();

                // Again, thus dumps the status of a node
                ConsoleApp.WriteLine();
                ConsoleApp.WriteLine("Inspecting API state of Uart0Regs.UARTTXBUF ...");
                ConsoleApp.WriteLine(api.Variables.Uart0Regs.UARTTXBUF);           
               
                // We are now setting the "to write" property of a node. Unions
                // are fully supported, and you can set values from any one
                // union vector and the change will show up in the other union
                // representations of the memory: these .NET nodes are wrappers
                // around a single "virtual" view of the device memory.
                //
                // Setting .Value just updates a "to write" area in this virtual
                // memory.
                ConsoleApp.WriteLine();
                ConsoleApp.WriteLine("Setting Uart0Regs.UARTTXBUF.bit \"to write\" values ...");
                api.Variables.Uart0Regs.UARTTXBUF.bit.rsvd0.Value = 0xAAAAAA;
                api.Variables.Uart0Regs.UARTTXBUF.bit.TXDAT.Value = 0xFF;

                // We could have done this instead, but above is easier
                // ConsoleApp.WriteLine("Setting Uart0Regs.UARTTXBUF.all ...");
                // api.Variables.Uart0Regs.UARTTXBUF.all.Value = 0xAAAAAAFF;

                // NOTE: silly example; rsvd0 bits are just ignored on write

                // Note when we get the "Value" property for a node it returns
                // the pending write data, if one exists. Otherwise it returns
                // whatever was last read from the device.

                ConsoleApp.WriteLine();
                ConsoleApp.WriteLine("Inspecting API state of Uart0Regs.UARTTXBUF ...");
                ConsoleApp.WriteLine("Uart0Regs.UARTTXBUF.bit.rsvd0.Value = 0x{:X}", api.Variables.Uart0Regs.UARTTXBUF.bit.rsvd0.Value);
                ConsoleApp.WriteLine("Uart0Regs.UARTTXBUF.bit.TXDAT.Value = 0x{:X}", api.Variables.Uart0Regs.UARTTXBUF.bit.TXDAT.Value);
                ConsoleApp.WriteLine("Uart0Regs.UARTTXBUF.all.Value = 0x{:X}", api.Variables.Uart0Regs.UARTTXBUF.all.Value);
                ConsoleApp.WriteLine(api.Variables.Uart0Regs.UARTTXBUF);
                ConsoleApp.WriteLine(api.Variables.Uart0Regs.UARTTXBUF.bit);
                ConsoleApp.WriteLine(api.Variables.Uart0Regs.UARTTXBUF.bit.rsvd0);
                ConsoleApp.WriteLine(api.Variables.Uart0Regs.UARTTXBUF.bit.TXDAT);

                // All this showing different parts of the union/struct above is overkill in everyday
                // use; this is just to show you that the .NET API works similar to "C" code
                // version for accessing the data structures.

                // This writes the "dirty" bytes out. Every byte that is written is read back,
                // and after this Value will contain what was read back. If there was an error,
                // an exception would be thrown and unwritten bytes would continue to be
                // marked dirty.
                ConsoleApp.WriteLine();
                ConsoleApp.WriteLine("Writing dirty bytes (this also does a refresh of addresses written) ...");
                api.Write_Pending();

                ConsoleApp.WriteLine();
                ConsoleApp.WriteLine("Inspecting API state of Uart0Regs.UARTTXBUF ...");
                ConsoleApp.WriteLine(api.Variables.Uart0Regs.UARTTXBUF);
                ConsoleApp.WriteLine("Uart0Regs.UARTTXBUF.bit.rsvd0.Value = 0x{:X}", api.Variables.Uart0Regs.UARTTXBUF.bit.rsvd0.Value);
                ConsoleApp.WriteLine("Uart0Regs.UARTTXBUF.bit.TXDAT.Value = 0x{:X}", api.Variables.Uart0Regs.UARTTXBUF.bit.TXDAT.Value);

                // Shows access to array-based variables
                ConsoleApp.WriteLine();
                ConsoleApp.WriteLine("Reading AdcRegs.ADCRESULT[] ...");
                api.Variables.AdcRegs.ADCRESULT.Read();
                for (int i = 0; i < api.Variables.AdcRegs.ADCRESULT.Length; i++)
                {
                    ConsoleApp.WriteLine("ADCRESULT[{}] = 0x{:X}", i,
                        api.Variables.AdcRegs.ADCRESULT[i].bit.RESULT.Value);
                }


                //
                // Shows how to export/import memory settings file "save files". This is an API
                // version of the same functionality available in the GUI.
                //

                // Export does not force a read; it reflects the current state of the memory cache.
                // So we force a read because above we were just working with sub-registers in
                // Uart0Regs
                ConsoleApp.WriteLine();
                ConsoleApp.WriteLine("Reading memory Uart0Regs ...");
                api.Variables.Uart0Regs.Read();

                ConsoleApp.WriteLine();
                ConsoleApp.WriteLine("Inspecting API state of Uart0Regs.UARTTXBUF ...");
                ConsoleApp.WriteLine(api.Variables.Uart0Regs.UARTTXBUF);

                // Export to file
                ConsoleApp.WriteLine();
                ConsoleApp.WriteLine("Exporting Uart0Regs ...");
                api.Variables.Uart0Regs.Export("Uart0Regs.xml");

                // Change something inside of Uart0Regs
                ConsoleApp.WriteLine();
                ConsoleApp.WriteLine("Changing TXDAT ...");
                api.Variables.Uart0Regs.UARTTXBUF.bit.TXDAT.Value = 0xBC;
                api.Write_Pending();

                // Import our saved memory, wiping out above change
                ConsoleApp.WriteLine();
                ConsoleApp.WriteLine("Importing Uart0Regs ...");
                api.Import("Uart0Regs.xml");

            }

            static void Memory_Driver_ReadMemory(object sender, TIDP.Memory.ReadMemoryEventArgs e)
            {
                ConsoleApp.WriteLine(e.Message);
            }

            static void Memory_Driver_WroteMemory(object sender, TIDP.Memory.WroteMemoryEventArgs e)
            {
                ConsoleApp.WriteLine(e.Message);
            }
        }
    }

    我的先学会了,才可能买,可能用。

    另外,我的电源是:1000w-10kw

    第一级pfc85-265v  ac输入输出 380-400v dc

    第二级pwm调压 85-300v dc

    第三级半桥输出 频率20khz可调,占空比5%-45% 可调

    软启动,过流保护,过压保护,欠压保护。

    不知道能不能行。

    多谢大侠

     

     

     

     

  • 您好,我们的代码还没有放到网上,建议您和TI的销售人员联系,申请获取源代码。源代码里面有PFC程序实现的全过程,而GUI只能进行一些基本的调试,有了源代码之后你就可以完全掌控整个系统啦。