leon101010 发表于 2009-3-16 12:14:59

请教马老师:您在设计ISSP编程器的时候,有没有发现CY给出的命令和Demo与原厂的命令有

请教马老师:您在设计ISSP编程器的时候,有没有发现CY给出的命令和Demo与原厂MiniProg的命令有不同的地方?您如何处理
例如:原厂MiniProg在Power模式上电后,先发送0xca,0x00,0x00,0x00,0x00,0x00 后再发送了11Bit "1" ,目标CPU回应了0x17,但是资料上并没有11Bit"1"的命令!而目标CPU回应0x17也不知道其含义.
       资料上讲的却是上电后,发送初始化序列1.
还有很多不同的地方.请问您是如何处理这些不同的地方?

machao 发表于 2009-3-16 12:38:33

我没有分析原厂的东西,因为除了PSoC编程协议部分,MONIPRO还需要同上位机联系,再要加上USB本身的协议。因此在数据流中可能是3种协议混在一起的,分析非常麻烦。

我直接使用SYPRESS的ISSP协议文件(已经贴出),上面与PC的协议是自己制定的。

monipro使用了两块片子,一块负责与PC的USB通信,然后再传到第2片子,由它完成对PSoC的编程。这样复杂,而且效率也低,所以编程速度慢。但它可能有其它的考虑,比如支持更多的芯片,可自己更新代码固件。CYPRESS在网上公开了它的电路,可以看一下。

我只使用一片64215,就完成了USB的通信和对PSoC的编程,另一片244只是隔离和增加驱动,以及把数据分开,让主芯片读数据和写数据分成两个口,方便控制。

我的ISSP整个设计思路全部是自己的,只是要符合PSoC的编程协议。

这么简单的东西,没有必要分析别人的东西。不客气的讲,CYPREE设计工具的工程师水平可能也高不到那里,只是他们可以拿到最新的,第一手的,以及全部的文档和资料。(有点自夸了,不过这也是为中国人挣点面子)。

中国有水平的硬件工程师不比国外的差,只是我们更深层次的基础不行,设计不出好的芯片。

leon101010 发表于 2009-3-16 13:18:18

谢谢马老师的解答.看来我也只需完成AN2026a文件规定的协议就可以了.

machao 发表于 2009-3-16 21:28:35

是的,我主要参照的就是AN2026a和AN2026b(AN2026中设计的片子已经淘汰,所以不支持)。另外就是CYPRESS官站上有2个ISSP的DEMO例子,尽管只是涉及了ISSP的部分,与上位机通信没有,以及还有一些不足和BUG外,但结合代码还是能非常好的理解和掌握ISSP协议的。

我把这些参考的资料全部贴出了。

在我的设计中,使用了PSoC的USBUART用户模块,非常轻松的跳过了USB的协议低层,从UART开始编写,非常方便。这个用AVR是做不到的。

其实,由于64214本身有USB接口,应该实现在线更新64215的固件和升级也是做的到的。CYPRESS还有一个USBBOOT的用户模块,我发贴询问CYPRESS的支持,如何将USBUART和USBBOOT结合一起使用(既USB+UART+BOOT)。结果4个月了,CYPRESS没有给出如何方案,说正在研究。另外就是在开发中,发现了USBUART用户模块中的一个BUG,CYPREE公司也是近一个月才给出修改版代码。这两个因素是造成我的PSoC-ISSP推出比较晚的主要原因。

最后我采用了另外的方法,使用XML文件保存支持芯片的参数,这样只要新的芯片出来,而且是符合AN2026a和AN2026b协议的,那么只要在XML文件中加上此芯片的参数(XML是个文本文件),不需要修改上位机软件以及64215的固件,就可以升级支持新的片子了。

用AVR做AVR的编程器,用PSoC做PSoC的编程器,看上去硬件不复杂,但都涉及到USB、编程协议,以及上位机程序等比较深的的东西,所以实现起来还是有一定难度的。但做这个东西,不仅本身是熟悉、学习和提高,而且还有一定的使用价值,所以还是值得“玩玩”的。

leon101010 发表于 2009-3-20 20:39:27

感谢马老师详细的解说.

我在测试我的编程器时发现另外一个问题一直没有解决.请马老师指点一下.

CheckSum CY8C24533和CY8C24633时结果一直不对,其它型号都是正确的.由于目前没有找到关于上述2种芯片的编程资料,所以我按CY8C24x23 & CY8C24x23A的Checksum Setup Vectors来读取Checksum.

请问是这个原因导致CheckSum不对吗?

leon101010 发表于 2009-3-27 18:18:37

经过试验发现只编程CY8C24533的前4K, CheckSum就是正确的.这可能使用的CY8C24x23A的Checksum Setup Vectors造成的结果.
请问马老师CY8C24533的Checksum Setup Vectors是不是不同?

machao 发表于 2009-3-30 17:43:56

<Chip Name="CY8C24123A" Id="50" BankNum="1" BlockPerBank="64" SecurityDataPerBank="64" ProgramVectorType="1" ChecksumVectorType="2" UniqueInitVector="0" UniqueProgramVector="0" PowerCycleMode="1" ResetMode="0" />


<Chip Name="CY8C24533" Id="176" BankNum="1" BlockPerBank="128" SecurityDataPerBank="64" ProgramVectorType="1" ChecksumVectorType="3" UniqueInitVector="0" UniqueProgramVector="0" PowerCycleMode="1" ResetMode="0" />

实际上我已经告诉你了,你应该下载我的ISSP编程器PC上的软件看看,里面有个XML文件,如果你熟悉ISSP协议,比较一下什么都明白了。水平还是不到家,或者你没仔细研究我的帖子。

我也是没有CY8C24533和CY8C24633的编程资料,是查看CY的MINIPRO里相关的文件,加上测试实现的。花费15分钟(不改任何代码,只是在XML文件中加上后面的CY8C24533的配置说明)。

leon101010 发表于 2009-3-30 18:09:04

不好意思,我没有下载您的软件.现在去下......

machao 发表于 2009-3-30 18:11:14

我不是已经把最关键的东西贴上了吗?

<Chip Name="CY8C24123A" Id="50" BankNum="1" BlockPerBank="64" SecurityDataPerBank="64" ProgramVectorType="1" ChecksumVectorType="2" UniqueInitVector="0" UniqueProgramVector="0" PowerCycleMode="1" ResetMode="0" />

<Chip Name="CY8C24533" Id="176" BankNum="1" BlockPerBank="128" SecurityDataPerBank="64" ProgramVectorType="1" ChecksumVectorType="3" UniqueInitVector="0" UniqueProgramVector="0" PowerCycleMode="1" ResetMode="0" />

leon101010 发表于 2009-3-30 18:35:55

我已经明白了,谢谢

gary_zou 发表于 2009-4-11 09:30:11

现在还没开始做ISSP,很有兴趣,有时间就开始玩玩

lbfugnx2 发表于 2010-5-28 20:33:50

回复【10楼】gary_zou
-----------------------------------------------------------------------

CY7C64215   能不能用简易并口编程器下载固件!!!!!!!!!
页: [1]
查看完整版本: 请教马老师:您在设计ISSP编程器的时候,有没有发现CY给出的命令和Demo与原厂的命令有