TI中文支持网
TI专业的中文技术问题搜集分享网站

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的支持。

 

Jessica LI:

您好,

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

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

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

jx wang:

回复 Jessica LI:

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% 可调

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

不知道能不能行。

多谢大侠

 

 

 

 

jx wang:

回复 jx wang:

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

没找到fw文件

Jason Wang83:

回复 jx wang:

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

赞(0)
未经允许不得转载:TI中文支持网 » ucd3138
分享到: 更多 (0)