我想用 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只能进行一些基本的调试,有了源代码之后你就可以完全掌控整个系统啦。