• 英飞凌TC767单片机例程-spram。tasking编译环境,用于熟悉spram操作
  • 英飞凌单片机开发环境宝典DAVE&TASKING&GNU&Miniwiggler&uTenux(中文)其中主要讲解了英飞凌单片机的各种开发环境,
  • 英飞凌单片机XC866中文资料、例程方案、应用问答,针对问题的详细解答链接汇总。
  • Aurix TC275 书籍,仅供参考,模块:GPIO,GTM,CPU,RAM,FLASH,A/D,DMA,CAN,QSPI/ASCLIN/CCU6/STM
  • 英飞凌单片机

    2020-05-05 23:30:09
    英飞凌单片机例程 开发工具 应用软件 下载软件
  • 最近一段时间,忙着和小伙伴们准备智能车比赛...英飞凌单片机支持的集成开发环境(IDE)有两个,一个是Hightec,一个是Tasking。看到Tasking比较多人用,我就决定使用这款IDE。 打开后,发现Tasking和以前学习java用...

    最近一段时间,忙着和小伙伴们准备智能车比赛,要用到英飞凌(Infineon)的TC264型号的单片机。虽然以前没用过,但是根据以往学习51单片机、Stm32单片机的经验,当然是从点亮一个LED开始入门啦。

    英飞凌单片机支持的集成开发环境(IDE)有两个,一个是HighTec,一个是Tasking。由于Tasking比较多人用,所以我就试试使用这款IDE。点击TriCore Eclipse IDE,即可打开Tasking。
    在这里插入图片描述
    打开后,发现Tasking和以前学习java用到的Eclipse很像,应该是英飞凌公司对Eclipse二次开发而成的。在这里插入图片描述
    不管那么多,先把程序编译一下看看。

    在这里插入图片描述
    可以看到编译的结果。

    在这里插入图片描述
    但一开始在这里我却遇到一个问题,就是编译结束后竟然没有在Debug的文件夹中找到Hex文件,这个Hex文件是等一下要烧写到单片机中的,找不到那就难受了。后来我在网上找了一下发现原来Tasking中有个地方要设置一下。

    以下是设置的步骤:

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    设置完后,再次编译一下就可以在Debug文件夹中看到生成的Hex文件了,真是太好了。

    在这里插入图片描述
    在这里要注意一下,在使用下载器前,要记得把下载器的驱动安装好,当下载器连上电脑后,可以在设备管理器–>通用串行总线控制器中看到以下的信息。

    在这里插入图片描述
    有了下载器驱动和Hex文件,接下来就是把程序烧写到单片机中了。我用到的烧写工具是英飞凌官方提供的软件,叫Memtool,先打开该软件,再把下载器和单片机连上,做好烧写程序前的准备。

    以下就是烧写程序的步骤:

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    程序烧写到单片机后,只要按一下核心板上的复位按键,程序就会开始运行,下面可以看到单片机上的LED已经开始闪烁了,是不是很有意思呀?

    在这里插入图片描述
    再给大家看看程序的一部分,由于程序用的是库函数,所以看起来还是挺简单的。
    在这里插入图片描述
    经过这次对英飞凌单片机的“点灯”实验,初步对英飞凌的单片机的程序开发过程有了初步的了解,不过这只是入门的第一步。后面还要继续对单片机内部的资源、寄存器、库函数好好学习了解一下才能真正学懂一款单片机。今天先说到这里吧,得继续去学习喽!

    展开全文
  • infineon xc16x 例程

    2020-06-03 23:32:31
    infineon xc16x 例程 包括ADC、ASC、GPT、TwinCan、CapCom等。
  • 英飞凌XC164CS系列单片机经典例程源代码
  • 英飞凌TC767单片机例程-PWM,tasking编译环境,用于熟悉PWM输出控制
  • 最近工作上需要对英飞凌XC886这款单片机的Flash进行读写,以下为简要的几点总结: 一、Flash存储器结构: XC886共有32KFlash,地址映射如下图所示: 共三块P-Flash用来存储程序,两块D-Flash既可用来存储程序也可以...

    最近工作上需要对英飞凌XC886这款单片机的Flash进行读写,以下为简要的几点总结:

    一、Flash存储器结构:
    XC886共有32KFlash,地址映射如下图所示:

    Flash地址映射
    共三块P-Flash用来存储程序,两块D-Flash既可用来存储程序也可以存储数据,每块D-Flash映射到两个不同的地址,如Bank1映射到6000-6FFF和B000-BFFF,通常存储程序的时候采用低地址,存储数据的时候采用高地址。此处需注意每个Flash bank虽然映射到了两个地址,但实际在物理上是同一块Flash,不要把两组地址当做两块Flash来操作,否则会相互影响数据。

    二、Flash bank的分区如下图所示:
    Flash bank的分区
    D-Flash分区较为灵活。因为Flash每次擦除要擦除整个扇区(Sector),所以扇区划分越细越有利于我们操作。Flash写之前都需要先擦除,擦除后的状态为全0,写的时候可以从0写为1,不能从1写为0。

    三、写Flash:
    写Flash的时候每次要写一个字线地址(WL),对于P-Flash来说是64个字节,D-Flash来说是32个字节,下图为手册中给出的字线地址划分:
    P-Flash字线地址
    D-Flash字线地址
    芯片手册中对于Flash的写给出了如下说明:

    对于 P- Flash bank,由于 Flash 单元只能承受一个门干扰,因此已编程的字线在重新编程前必须先擦除。因为不可能单独擦除一条字线,这即意味着包৿该字线的整个扇区必须全部被擦除。
    对于 D- Flash bank,由于 Flash 单元能承受两个门干扰,同一条字线在擦除前可编程两次。 这即意味着如果需要编程的数据字节的个数小于 32 字节(最小编程宽度), 用户可选择先编程这些数据字节(x; x 可以是 1-31 之间的任意整数),之后再编程其余字节(32-x)。 不过,由于 D-Flash 的最小编程宽度始终为 32 个字节,因此在每个编程周期中᳾被编程的字节必须写入全 0。

    没有能够很透彻地理解它的这段话,但实际试验结果是对于D-Flash来说,一个WL在擦除前可被编程多次,即只要原来为0x00的字节都可以被写入非0值,对于原来已有数据的字节,已经被写入1的数据位不能再被写入0,但如果有某一位没有被写入过1,通常情况下可以被写入1,例如0x80(10000000)可以被写为0x81(10000001),但这并不代表Flash可以按位操作,例如实测0x03(00000011)想写为0x07(00000111)时就会写入失败,原因没有深入研究。

    四、Flash模拟EEPROM
    因为Flash使用寿命有限,只针对Flash的一个区域进行操作会造成其快速老化,使用效率过低,所以可以通过算法来模拟EEPROM,循环使用Flash的多个Sector,延长寿命,同时也避免存储数据时相互冲突和影响。英飞凌官方提供了三种Flash模拟EEPROM的算法,例程代码和说明见
    https://download.csdn.net/download/weixin_42967006/11356942
    其中操作Flash的函数是用汇编写的,如下图所示,给出了在C语言中调用的接口。 Flash读写函数
    官方给出的三个算法都略为复杂,我只需存储一个标志位,所以在实际应用的时候自己简单做了个简单的小算法,能够实现标志位的存储,并且循环使用了bank1的每一个sector,把代码贴出来供大家参考。

    char selectedLanguage=0; //
    unsigned char code * piWLAddress;
    unsigned char code * piWLAddressToCover=-1;
    char idata ucSectorNumberToRead=0;
    char idata ucSectorNumberToErase=-1;
    unsigned char data storedLanguage[32]=0;
    char code * code iSectorAddress[10]={0xB000,0xB400,0xB800,0xBA00,0xBC00,0xBD00,0xBE00,0xBE80,0xBF00,0xBF80};
    
    //查找有效的Sector
    SearchSector:
    	piWLAddress=iSectorAddress[ucSectorNumberToRead];
    SearchWL:
    	if(*piWLAddress==0x81)//用过,失效
    		{
    			if(piWLAddress==0xBFE0 )//到达最后一个WL
    			{
    				selectedLanguage=0; 
    				ucSectorNumberToErase=0;		//	ucSectorNumber无效sector,待擦除写入有效值 	
    				piWLAddress=iSectorAddress[ucSectorNumberToErase];
    				goto SearchEnd;
    			}
    			else
    				{
    				piWLAddress+=0x20;
    				if(ucSectorNumberToRead<9 && piWLAddress==iSectorAddress[ucSectorNumberToRead+1])//判断是否到达下一个sector
    					{
    					ucSectorNumberToRead++;
    					goto SearchSector;
    					}
    				else goto SearchWL;
    				}
    		}
    		else if(*piWLAddress==0x80)//有效
    		{
    			selectedLanguage=*(piWLAddress+1);
    			if(selectedLanguage<0||selectedLanguage>2) selectedLanguage=0;
    			if(piWLAddress==0xBFE0)//已经是最后一个WL
    				{
    				ucSectorNumberToErase=0;
    				piWLAddressToCover=piWLAddress;
    				piWLAddress=iSectorAddress[ucSectorNumberToErase];
    				}
    			else
    				{
    				piWLAddressToCover=piWLAddress;
    				piWLAddress+=0x20;
    				if(piWLAddress==iSectorAddress[ucSectorNumberToRead+1])//是否到达下一个sector
    					{
    					ucSectorNumberToErase=ucSectorNumberToRead+1;//擦除下一个sector
    					}
    				}
    		}
    		else//无有效sector
    		{
    			//	ucSectorNumber无效sector,待擦除写入有效值 					
    				selectedLanguage=0; 
    				ucSectorNumberToErase=ucSectorNumberToRead;		//	ucSectorNumber无效sector,待擦除写入有效值 	
    				piWLAddress=iSectorAddress[ucSectorNumberToErase];
    		}
    SearchEnd:
    ……
    //写入有效数据
    //其中NMISR为单片机NMI状态寄存器,当Flash动作执行完毕后第3位会置1
    	if(piWLAddressToCover!=-1)//将已用WL置为已用
    	{
    		storedLanguage[0]=0x81;
    		FLASH_PROG(piWLAddressToCover,(char data*)storedLanguage);
    		while(0==(NMISR & 0x04));
    		NMISR &= ~(ubyte)0x04;
    	}
    	
    	//erase sector
    	if(ucSectorNumberToErase!=-1)
    		{
    //								lEraseSector=0x00000001<<ucSectorNumberToErase;
    //								FLASH_ERASE((char)(lEraseSector>>16),(char)(lEraseSector>>24),//D-Flash bank 0 sector 0-9
    //														(char)lEraseSector,(char)(lEraseSector>>8),//D-Flash bank 1 sector 0-9
    //														0,0,0);//P-Flash
    		FLASH_ERASE(0,0,//D-Flash bank 0 sector 0-9
    								(char)(0x0001<<ucSectorNumberToErase),(char)(0x00000001<<(ucSectorNumberToErase-8)),//D-Flash bank 1 sector 0-9
    								0,0,0);//P-Flash
    
    		while(0==(NMISR & 0x04));
    		NMISR &= ~(ubyte)0x04;
    		}
    	
    	storedLanguage[0]=0x80;
    	storedLanguage[1]=selectedLanguage;
    	FLASH_PROG(piWLAddress,(char data*)storedLanguage);//存有效数据
    	while(0==(NMISR & 0x04));
    	NMISR &= ~(ubyte)0x04;
    
    

    以上。其实大部分内容是参考的芯片手册,这里只是将我觉得有用的地方做了记录和提炼,方便日后查询,也欢迎大家交流指正。

    展开全文
  • 英飞凌TC767单片机例程-flash,tasking编译环境,熟悉flash操作
  • 培训背景 全国大学生智能汽车竞赛是以智能汽车为研究对象的创意性科技竞赛,是面向全国大学生的一种具有探索性工程实践活动,是教育部倡导的大学生科技竞赛之一。 本竞赛以"立足培养,重在参与,鼓励探索,追求卓越...

    培训背景

    全国大学生智能汽车竞赛是以智能汽车为研究对象的创意性科技竞赛,是面向全国大学生的一种具有探索性工程实践活动,是教育部倡导的大学生科技竞赛之一。

    本竞赛以"立足培养,重在参与,鼓励探索,追求卓越"为指导思想,旨在促进高等学校素质教育,培养大学生的综合知识运用能力、基本工程实践能力和创新意识,激发大学生从事科学研究与探索的兴趣和潜能,倡导理论联系实际、求真务实的学风和团队协作的人文精神,为优秀人才的脱颖而出创造条件。

    为了帮助参赛队伍更好的了解和使用英飞凌单片机32位单片机AURIXTM,北京乾勤科技精心准备了一场基于英飞凌科技TC264的专场在线HOT(Hand-On Training)培训。TC264 属于第一代 AurixTM TC26xD 系列产品,其创新多核心架构基于多达两个独立 32 位TriCore? CPU,专为满足极高的安全标准,同时大幅提高性能而设计。届时,我们将请富有经验的工程师为您介绍英飞凌卓越创新的TC264嵌入式平台,详细讲解其开发流程和关键模块的使用,并配合有现场动手练习,帮助您深入了解TC264的特性和使用方法,为您的比赛助力。

    培训时间

    2020年4月15日 14:00-17:00
    2020年4月16日 14:00-17:15

    培训地点

    EEPW在线培训平台(最好是提前打开连接注册,确保能不影响听会)
    2020年4月15日 14:00-17:00

    http://seminar.eepw.com.cn/seminar/show/id/429

    2020年4月16日 14:00-17:15
    http://seminar.eepw.com.cn/seminar/show/id/430

    培训日程

    在线培训为期两个半天,由乾勤工程师主讲。通过开发工具介绍,功能模块讲解,软件例程上手练习等环节,实现AURIXTM的快速入门到精通。
    注:以当天实际日程为准

    ▲ 培训日程安排

    ▲ 培训日程安排

    参加培训的同学,提前准备好比赛用TC264板。

    ▲ TC264 SmartCar-V2.2

    ▲ TC264 SmartCar-V2.2

    展开全文
  • Aurix-TC275单片机例程

    2020-07-05 23:31:33
    Aurix-TC275单片机例程,TC275 基础例程、产品说明书、实验指导书
  • 英飞凌16位单片机XC164CS的原理与基础应用》针对英飞凌XC164系列单片机,详细的介绍了单片机的原理及应用方法,结合Keil使用,对每个外设都有例程讲解
  • 一、英飞凌单片机BootLoader实现机制 英飞凌多个系列的单片机都提供了BootLoader机制,即能够在不连接烧写器的情况下,通过CAN、UART等传输协议实现自身程序的更新,便于产品使用过程中软件的更新迭代。我这次用的是...

    一、英飞凌单片机BootLoader实现机制

    英飞凌多个系列的单片机都提供了BootLoader机制,即能够在不连接烧写器的情况下,通过CAN、UART等传输协议实现自身程序的更新,便于产品使用过程中软件的更新迭代。我这次用的是XC2000系列单片机,基于CAN实现BootLoader。

    关于实现机制,总的来说有以下几步:
    1.通过配置单片机的复位状态寄存器或外部与之相关的引脚,使单片机复位后进入BootLoader模式;
    2.上位机通过英飞凌预定义好的传输协议给单片机发送一段程序(下文称为CAN_Loader),CAN_Loader包括和上位机之间的通信协议以及操作单片机Flash的Flash driver;单片机在接收CAN_Loader的过程中自动按顺序逐字节将其写入到PSRAM(单片机Flash中预留的一段空间,可以灵活读写,专门用来存储临时程序)中,接收完毕后自动跳转到PSRAM的起始地址开始执行CAN_Loader程序;
    3.使用CAN_Loader中定义的通信协议,对单片机Flash进行操作,先将旧程序所在存储空间擦除,然后将新程序传输给单片机,CAN_Loader便可以依据指令将新程序写入指定的存储空间;
    4.新程序写入完毕后,将复位状态寄存器恢复默认状态,即从Flash启动的模式,重启单片机即可执行新的程序代码。

    英飞凌官方给了例程代码和说明文档,我这次实现也是基于官方的这个例程,需要的同学可从官网下载,如果嫌麻烦也可从下面的链接下载:

    https://download.csdn.net/download/weixin_42967006/11686233

    官方的实现方法是用两块单片机,一块做主机,一块做从机(即待更新程序的单片机),主机与上位机PC之间通过串口连接,与从机之间通过CAN连接。官方给了三段程序,程序在主从机内存分布如下图所示(左侧为主机):
    在这里插入图片描述
    其中:

    CAN_BSLMaster只存在于主机中,作用是和PC进行通信,依据PC的指令,执行将CAN_Loader程序传给从机、擦除Flash、传输MainAPP等操作。
    CAN_Loader即我们上文提到的需要写入从机PSRAM中的程序。
    MainAPP是新的APP,里面实现了简单的CAN通信和复位功能。

    有关这三段程序的详细介绍在上文提到的英飞凌官方说明文档中有,这三段程序提前被烧写进主机相应的地址处,然后主机执行CAN_BSLMaster程序,依次将CAN_Loader和MainAPP写入从机相应地址。

    我这次只采用了官方的CAN_Loader程序,没有采用主从机的模式,而是以CANoe作为上位机,用CAPL编写脚本直接给XC2000发CAN报文指令的形式,实现了一个简单的流水灯小程序的更新。下面就详细说一下实现方法。

    二、XC2000 CAN BootLoader的实现

    1.进入CAN BootLoader模式:我这次采用硬件方法进入,也可以软件给复位状态寄存器赋值后重启进入,英飞凌官方也给了一段汇编代码,执行即可进入CAN BootLoader模式,官方例程中ToolFile文件夹中的hex文件就是。本次采用硬件方法。依据芯片手册,当单片机的P10[3:0]=(1101)b,且TRST引脚=1时,重启单片机,单片机会进入CAN BootLoader模式。图中的x代表不关心,可为任意值。
    在这里插入图片描述
    2.传输CAN_Loader程序:进入CAN BootLoader模式后,需要按照英飞凌预定义好的传输协议将CAN_Loader程序传给单片机。传输协议在CAN_BSL说明文档和XC2000的芯片手册中都有说明,下图为说明文档中的定义:
    在这里插入图片描述
    整个过程分为三个阶段:

    初始化阶段:单片机进入CAN BootLoader模式后,会一直处于等待初始化帧的状态,使用Node 0作为CAN收发节点,即Tx=P2.5,Rx=P2.6。上位机应首先向单片机发送初始化帧,波特率可为125-500K之间任意值,单片机收到后会自动检测波特率。初始化帧的内容如上图所示,ID随意,DLC=8,字节0-1为0x5555,用来检测波特率,字节2-3为应答报文的ID,注意这两个字节是完整的MOARH寄存器的值,使用bit[13:0],其中bit13=IDE,本次IDE置1,bit[12:2]是11位ID,故如果想设置ID=0x123,则字节2-3=0x4000 | (0x123<<2);字节4-5是传输CAN_Loader程序所要用的帧数量(MSG_CNT),例如程序大小是4K字节,那么MSG_CNT=4K/8=0x200;要注意的是MSG_CNT的低字节放在字节4,高字节放在字节5,当时就被这个问题折磨了好久。。。XC2000有64K的PSRAM,但最后255字节被芯片固件使用,如果在最后255字节写入程序,之后将会被擦除,所以允许的最大CAN_Loader程序的大小是64K-255字节,MSG_CNT最大为8192-32;字节6-7是之后发送程序数据时用的CAN-ID,填入规则与字节2-3相同。

    应答阶段:单片机在接收到上位机发送的初始化报文后,自动检测波特率,成功后发送应答报文。**上位机应一直发送初始化报文直到单片机检测波特率成功并发出应答报文。**应答报文的ID是初始化报文中的ACK_ID,DLC=4,字节0-1是单片机中BTR寄存器的值,反应检测出来的波特率;字节2-3复制初始化报文中的字节2-3。

    数据传输阶段:上位机在收到单片机返回的应答报文后,开始逐帧向单片机发送CAN_Loader程序数据,数据帧的ID应为初始化报文中得MSG_ID;DLC=8,每帧传输8字节,直到所有数据传输完毕,所传输的数据帧的总数应等于初始化报文中的MSG_CNT。在这期间单片机不发送响应。单片机在接收数据帧时将程序数据逐字节写入PSRAM,对于XC2000来说是从0xE00000处开始写。直到接收完MSG_CNT数量的数据帧后,自动跳转到0xE00000处开始执行CAN_Loader程序。

    至此,CAN_Loader程序下载完毕,单片机进入CAN_Loader程序。

    3.更新程序:当单片机运行CAN_Loader程序后,上位机再和单片机进行通信时就不再遵循上一部分的通信协议,而是遵循CAN_Loader程序中定义的通信协议。如果使用的是官方的CAN_Loader程序,那么其中包含的命令可在CAN_BSL说明文档的第5章中找到。主要有以下几个命令:

    (1)擦除扇区操作:在写入程序之前必须先把待写入的Flash区域擦除。擦除指令报文的DLC=2,数据场为:0x03+SectorNumber,其中Flash地址空间对应的SectorNumber如下图所示。如果擦除成功,单片机返回一个数据场全为0的响应,如果擦除失败返回0x01。
    在这里插入图片描述
    (2)下载示例程序:使用该命令可以将一段大小为64K的程序传给单片机,单片机会从地址0xC00000处(也是单片机复位后程序执行的起始地址)开始存储该段程序,程序小于64K可用0x00填充,大于64K可用下一个命令按页编程命令继续将程序存储在其他地址空间。该命令首先发送一帧命令报文,DLC=1,数据场的一个字节是0x51,单片机状态满足的时候会回复为0的响应。在收到响应后即可连续发送数据帧,DLC=8,每帧传输8字节,每传输16帧(128字节,Flash一页的大小)后需等待单片机的响应,如果写入成功单片机会返回两个字节的响应,第一个字节是0,第二个字节是当前页的序号。持续发送数据帧直到16K数据全部发送完毕,如果还有数据剩余,可用下一步的按页编程继续写入,如果传输完毕,可执行下文(4)命令重启,即可从Flash中执行刚刚更新后的程序。

    (3)Flash按页编程:该指令只能在下载实例程序的状态下使用,即上文所述的情况下。该操作首先发送一帧指令报文,DLC=4,数据场第一个字节=0x01,第2-4字节是三字节长度的Flash页地址,即想要编程的Flash页的起始地址。然后发送数据帧,和上一步相同,每帧传输8字节,每传输16帧为一页,一页完毕后,需重新发送带有新的地址的指令报文,然后再发送数据。以此类推直到所有数据传输完毕。

    (4)重启进入标准模式,从Flash开始执行程序。当所有程序数据用以上两个指令被正确写入到内存中相应的地址后,即可发送本指令,单片机即可从Flash开始执行更新后的程序。指令报文DLC=1,数据场的一个字节是0x21.

    (5)重启进入CAN BootLoader模式。如果程序更新过程中出错,需要重新来,可使用本命令重新进入CAN BootLoader模式,然后需重新下载CAN_Loader程序。指令报文DLC=1,数据场的一个字节是0x20.

    4.恢复复位状态寄存器:以上步骤其实已经完成了程序的更新,但如果你像我一样是通过配置外部引脚的方法进入的CAN BootLoader模式,要记得再将引脚配置成从内部Flash启动的模式,否则下次重启时单片机又会进入CAN BootLoader模式了。

    以上就是用CANoe作为上位机(需要上位机程序的同学可以单独联系我),利用英飞凌XC2000系列单片机内置CAN_BSL功能实现程序更新的方法。这种方法的优点是利用英飞凌内置的机制,开发难度相对较小,可靠性较高,缺点是BootLoader程序(即上文的CAN_Loader程序)需每次重新下载,且下载该程序的协议固定,无法实现定制化。要想实现BootLoader常驻Flash,可将Flash划分成两个区域,一部分存储BootLoader程序,一部分存储应用程序,上电后先执行BootLoader,如果应用程序有效且无程序更新请求,则跳转到应用程序执行,否则停留在BootLoader,进行应用程序更新。我正在研究这种方法的实现,争取下一篇文章来和大家分享。

    展开全文
  • 英飞凌XC2000系列单片机用CAN传输实现BootLoader的官方例程代码,以及其CAN_BSL功能使用手册,手册内含CAN BSL实现机制介绍、具体实现方法和代码功能介绍。
  • 英飞凌单片机培训资料 包括启动,中断,STM CCU6使用讲解。 包含部分代码。对刚使用英飞凌的朋友,还是比较有用。
  • 英飞凌CAN程序代码

    2020-06-03 23:33:13
    本资源包含基于英飞凌XC886CAN模块使用的程序和PDF文档,对于学习英飞凌单片机,CAN总线的有帮助
  • 本资源包括文档 开发实例源代码 主要是针对英飞凌XC2000系列单片机的 CAN BOOTLADER 开发
  • Aurix培训完整实验例程 适用TC2xx系列 同济大学英飞凌培训材料
1 2 3
收藏数 54
精华内容 21