FX3/CX3 编程实现usb启动更新固件

FX3/CX3 有很多种启动方式,SPI启动,I2C 启动,还有usb启动等。
烧写程序是需要从usb启动的,但是运行程序则是要在spi或i2c启动(要么是spi flash,要么是 i2c eeprom)。
所以要更新固件(usb驱动),必须修改启动方式,板子要么弄几个拨码开关选择启动方式,要么每次都用电烙铁修改(特麻烦),要么选择编程方式实现。


编程方式实现的原理就是如果spi或i2c启动失败,就会从usb启动,参见文档说明。
所以上电后,我们的代码先判断引脚状态,如果是我们所希望的状态(比如引脚默认高电平,低电平则表示设置为usb启动),
如果是低电平,我们就执行代码,修改spi flash或i2c eeprom的起始代码,故意引起SPI/I2C 启动失败,失败后就会usb启动,这样我们就可以
通过usb control center来下载程序了。

鄙人用的是spi flash,所以代码参考上一遍读写flash。
当然也可以用usb vendor command 实现破坏起始代码。

const static uint8_t buf_WIP[10]={0};
status = CyFxSpiEraseSector(CyTrue,0,buf_WIP);
if (status != CY_U3P_SUCCESS)
{
return ;
}
CyU3PDeviceReset(CyFalse);

// CyU3PUsbAckSetup ();//rx ok,return ack packet.
CyU3PUsbSendEP0Data (8, (uint8_t *)glFirmwareID);

用usblyzer可以看到发送的数据,通过usb hound也可以发送自定义usb指令。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值