您的位置 首页 解答

at91sam9263芯片资源与CAN驱动调试心得

at91sam9263芯片资源与CAN驱动调试心得-Atmel的at91sam9263整合了18个简单、硅高效(silicon-efficient)、单一周期的外围PDC、五个DMA控制器(拥有对US

  at91sam9263嵌入了一个依据200 MIPS(每秒百万条指令)的ARM926EJ-S微操控器(MCU),然后处理了在图形界面、数据密集型运用(比方联网的医疗监测设备和GPS导航体系)中依据ARM9的传统微操控器遭受的瓶颈问题。

  at91sam9263采用了27条DMA(直接存储器存取)通道,包含Atmel 18通道的PDC(外围直接存储器存取操控器)、一个9层的总线矩阵以及用于数据/指示TCM(严密耦合式内存)的两条其他的总线,以便增强CPU功用并供给高达41.6 Gbps的片上数据传输速率。两个EBI(外部总线接口)支撑十亿字节以上的外部内存。

  人机接口。片上人机接口外围设备包含一个相机接口、TFT/STN LCD操控器、一个6通道音频前端接口(AC97)、I2S和一个2D图形协处理器,该处理器可减轻CPU的画线、区块传输、多边形填充和编排功用担负。

  联网和通讯。联网外围设备包含一个12Mbps的USB主机和设备、10/100 Ethernet MAC(以太网媒体接入操控器)以及1 Mbps CAN(操控器局域网)。其他还有四个USART(通用同步/异步收发器)、两个50 Mbps SPI(同步平行接口)、CompactFlash、SDIO(MCI)和一个TWI(双线接口),该TWI能被衔接到比如GPRS调制解调器和Wi-Fi等有线和无线通讯模块上。

  外围的DMA操控器使从外围设备到内存的数据传输无需运用CPU——依据ARM9的传统处理器经过宣布装载-存储指示(要求至少80个CPU 周期)完成内存和外围设备之间的一个字节的数据的传输。这些处理器以200 MHz(总线频率为100 MHz)运转,即便在内存办理单元和指示/数据缓存操控器都被激活的状态下,它们一般也会在传输到达约20 Mbps时到达其功用极限。

  Atmelat91sam9263整合了18个简略、硅高效(silicon-efficient)、单一周期的外围PDC、五个DMA操控器(具有对USB主机的突发形式支撑)、Ethernet MAC、相机接口、LCD 操控器、2D图形操控器,以及一个内存到内存的DMA操控器(支撑突发形式、涣散集合和链表)。DMA操控器彻底减轻了外部串行端口和内存之间的数据传输担负。当传输速度为20 Mbps时,Atmel的SAM9263依然有88%的MIPS可用于运用履行。

  11层的总线和96千字节的片上SRAM(静态存储器)消除了带宽瓶颈。Atmel在AT92SAM9263上装备了11条总线和96千字节的片上暂存SRAM。该SRAM可被部分地设定为严密耦合式数据和指示内存。这些总线可供给多条并排片上传输通道和总计41.6 Gbps的片上带宽。

  两个EBI使ARM9 CPU和图形处理器可一起、并行作业。at91sam9263具有两个EBI:一个是体系内存接口,另一个则是人机接口。第二个接口使LCD操控器和CPU无需同享内存,一起使可用的CPU MIPS增加20%到40%。

  【at91sam9263芯片资源】

  1、交融了ARM926EJ-STM ARM THUMB的处理器

  -DSP指令扩展,用于JAVA 加快处理器的JAZELLE技能

  -16K字节高速缓冲器,16K字节指令高速缓冲器,写缓冲器

  -在220MHZ 220MIPS

  -内存办理单元

  -EmbededICETM,调试通讯信道支撑

  -中等规划的履行内嵌式宏单元结构

  2、总线矩阵

  -9个32位层矩阵,答应片上总线带宽算计达28.8Gbps

  -引导形式选项,映像指令

  3、嵌入式内存

  -一个128K字节的内部ROM,以最大总线矩阵速度完成单周期拜访

  -一个80K字节的内部SRAM,以处理器最大速度或最大总线矩阵速度完成单周期拜访

  -一个16K字节的内部SRAM,以最大总线矩阵速度完成单周期拜访

  4、双外部总线接口(EBI0-EBI1)

  -EBI0支撑SDRAM,静态内存,使能的ECC Nand Flash 和compact Flash。

  -EBI1支撑SDRAM,静态内存,使能的ECC Nand Flash。

  5、DMA操控器

  -充任一个总线矩阵主控器

  -内嵌两个单向信道,这两个信道具有编程优先权、地址发生、信道缓存和操控。

  6、20个外设DMA操控器信道

  7、LCD操控器

  -支撑自动或被迫显现

  -在TFT形式下每个像素最大能够24bit,在STN五颜六色形式下每个像素最大能够16bit。

  -在TFT形式下最大能够16M五颜六色,分辨率可达2048X2048,支撑虚拟屏幕缓存。

  8、2D图形加快器

  -直线拖动,块搬运,多边形填充,剪切,指令排队。

  9、摄像传感器接口

  -ITU-R BT.601/656外部接口,可编程帧捕捉速率。

  -12bit接口,能够支撑高灵敏度传感器。

  -SAV和EAV同步,preview path with scaler,YcbCr格局。

  l0、USB2.0全速(12Mbit/秒)主机双端口

  -双片上收发器

  -集成的FIFO和专用的DMA信道。

  l1、USB2.0全速(12Mbit/秒)设备端口

  -片上收发器,2,432字节可装备的集成DPRAM。

  l2、10/100 Base-T以太网MAC

  -独立的媒体接口或简化的独立的媒体接口。

  -有用于接纳和发送的28字节FIFO和专用的DMA信道。

  l3、悉数特性的体系操控器,包含

  -复位操控器,中止操控器。

  -20个32bit电池后备寄存器,总计达80字节。

  -时钟发生器和电源办理操控器。

  高档中止操控器和调试单元。

  周期间个计时器,看门狗计时器和双实时计时器。

  1)复位操控器(RSTC)

  -依据两个上电复位单元,复位源辨认和复位输出操控。

  2)中止操控器(SHDWC)

  -可编程管脚操控和唤醒电路。

  3)时钟发生器(CKGR)

  -32768Hz低耗电振荡器用于后备电源供给,供给一个永久的低速时钟。

  -3-20MHz片上振荡器,两个最大240MHz的PLL。

  4)电源办理操控器(PMC)

  -较低时钟运转形式,软件可编程电源优化容量。

  -4个可编程外部时钟信号。

  5)高档中止操控器(AIC

  -可独自屏蔽,8级优先权,矢量中止源。

  -两个外部中止源和一个快速中止源,虚伪中止维护。

  6)调试单元(DBGU)

  -2线UART并且支撑调试通讯信道,可编程ICE存取阻挠。

  7)周期性距离计时器(PIT)

  -20bit距离计时器加12bit距离计数器。

  8)看门狗计时器(WDT)

  -加密维护,仅一次性编程,视窗化的16-bit计数器运转于低时钟

  9)两个实时计时器(RTT)

  -带有16-bit预分频器的自在备份计数器运转于低时钟

  l4、5个32-bit并行输入/输出操控器(PIOA,PIOB,PIOC,PIOD和PIOE)

  -160可编程的I/O线一起传输于外部设备2 I/O

  -每一条I/O线的信号输入、改动、中止功用

  -单个可编程的漏极开路输出、上拉电阻、同步输出

  -16全面可编程信息方针邮箱,时刻戳计数器

  l5、两个多媒体接口卡 (MCI)

  – SD卡/SDIO 和 MultiMediaCard 驱动

  – 自动化协议操控和用PDC快速自动化数据传输

  – 每一操控器带有两个SD卡槽支撑

  l6、两个同步串行操控器(SSC)

  –每一个接纳器和转换器有独立时钟和帧同步信号

  – I2S模仿接口支撑, 时刻分区同步传输支撑

  – 以32-bit数据转换器高速继续数据流功用

  l7、一个AC97 操控器 (AC97C)

  – 6-频道信号 AC97 模仿前端接口,插槽分配

  l8、3个通用同步和异步收发器 (USART)

  – 独立的波特率发生器, IrDA红外线调制、解调,曼彻斯特编码、解码

  – 支撑 ISO7816 T0/T1 Smart 卡,硬件握手信号, RS485 支撑

  l9、两个主从串行总线接口(SPI)

  – 8到16-bit 可编程的数据长度,4个外部总线芯片挑选

  – 每秒 90Mbits速度的同步通讯

  20、一个3频道的16-bit 计时器和计数器(TC)

  – 三个外部时钟输入端, 每个频道供给2个多功用 I/O 插口

  – 双 PWM 发生器, 原理图攫取,波形攫取形式,衔接、断开功用

  2l、一个四频道16-bit PWM 操控器WMC)

  22、一个两线接口 (TWI)

  – 主形式支撑,支撑一切的 Atmel EEPROMs

  23、一切数字引脚的IEEE 1149.1 JTAG鸿沟扫描

  24、电源供给

  –VDDCORE 和 VDDBU 电压为1.08V 至1.32V

  –VDDOSC 和 VDDPLL电压为 3.0V 至 3.6V

  –VDDIOP0 (外设I/Os)电压为2.7V 至 3.6V

  –VDDIOP (外设 I/Os)电压为11.65V 至 3.6V

  –VDDIOM0/VDDIOM1 可编程电压为 1.65V 至 1.95V 或许 3.0V 至 3.6V (内存 I/Os)

  at91sam9263 CAN驱动调试心得

  之前调试CAN设备,一般用的是一个从淘宝上买的USB转CAN的调试东西,100K — 800K波特率根本没有什么问题,咱们也就没有过多的去考虑一些细节的问题。忽一日,某客户说咱们的CAN驱动有问题,跟他们的CAN调试设备通讯不上,疑虑ing.遂带东西前往之,试之,公然。。。。

  遂借其CAN调试东西回来捯饬,久未果 查其为ZLG公司的产品,遂前往之。遇到周建功公司一个大牛,CAN专家,声称没有他处理不了的CAN问题,事实证明,却是有料,周建功公司的CAN 剖析仪便是他们一帮人弄的,现在不做研制,转做服务了。拿Can剖析仪查之,发现咱们的CPU宣布的CAN波形 波特率对不上,尽管设置为500K,可是由于CPU时钟频率非常规频率,分频今后,CAN时钟再512K左右,ZLG公司的CAN调试东西是规范品,他们一般要求时序是比较严厉的,所以咱们的设备跟他的调试东西之间通讯通不上,可是网上购买的USB转CAN的调试东西则将SJW域设置的比较大 3或许4 左右,能够跟大部分的CAN通讯上,即便是对方的CAN波特率不准确,存在比较大的差错。

  CAN问题绝大部分呢,应该便是出在波特率的准确度上,可是一般情况下没有那么精准的测验仪器,所以搞的咱们一头雾水。恰当调整SJW 同步跳转宽度的巨细,能够必定程度的处理这个问题,可是不是最佳的处理方案。尽管现象上看到,哦,通讯正常了,我发的包对方能够收到,对方发的数据包我也能够收到,可是,事实是,这儿面有了屡次的重发,得益于CAN协议,重发,应对等等。

  下面简略描绘下CAN波特率的剖析

  比方说500K波特率,一个比特被分为16个时刻因子

  500K * 16 = 8M

  所以CAN时钟应该尽量使8M的倍数。差错尽量小。

  同理核算其他波特率跟时钟的对应联系。

  在咱们的9263运用中,MCLK = PLLA/2,CAN时钟从MCLK分频而来。

  所以PLLA的取值应为16M的整数倍。咱们的PLLA一般设置再200M—150M,所以PLLA可取192M 176M 160M等。

  WinCE下设置就比较简略了,Eboot发动后,空格能够进入eboot装备菜单,能够直接设置CPU的主频 跟 分频,不赘述。

  裸奔的程序 则需求自己去设置倍频跟分频系数,从ATMEL官网下载了PLL核算东西,帮了不上忙,或许没有那么精准,可是尽量挨近就好。

  #define BOARD_MCK ((16367660 * 98 / 10) / 2) /*160M*/

  如上设置为160M的设置

  除了这个宏界说的批改以为,在board_lowlevel.c中也需求做一些批改,

  #define BOARD_MULA (AT91C_CKGR_MULA (97 《《 16))

  #define BOARD_DIVA (AT91C_CKGR_DIVA 10)

  便是那两个系数,留意分频系数不变,可是倍频系数减一了,原因看数据手册就理解。

  本来以为这样就能够了,可是还有一个当地疏忽了,看代码

  void LowLevelInit( void )函数中

  void LowLevelInit( void )

  {

  ……。

  #if !defined(sdram)

  /* Initialize main oscillator

  初始化主振荡器,时钟等一系列操作

  #endif //#if !defined(sdram)

  。。。。。。。。。。。

  }

  整个进程包含在了对sdram宏的判别内,假如界说了sdram则不做下面的处理,乖乖,你不做这个处理怎样能够呢,遂注释掉上面两个宏界说。

  这个宏界说不是在文件中界说的,而是在编译器的工程设置里边,

  Options-àC/C++ Compiler Preprocessor选项卡,最下面 Defined symbols

  也能够直接把sdram去掉。

  一向在纠结SDRAM的初始化是在什么当地进行的?

  调试心得之关于SPI发动的问题

  到底是什么问题呢:SPI DATA FLASH自身的质量有问题形成的。

  反映的现象是:从SPI DATAFLASH的0地址读取数据是没有任何问题的,可是假如从中心任何一段读取数据,就有严峻的地址偏移问题。

  调试进程及进程如下:

  本来以为是CPU(AT91SAM9263有A版别和B版别)版别有问题,形成无法读取FLASH形成,反应的现象是:

  当DATA FLASH发动后,会将榜首段代码EBOOT.nb0,存放于DATA FLASH的0X5000偏移地址,加载后,会进行WINCE的引导。

  可是实践成果是:

  ================================= 》RomBOOT 》RomBOOT 》RomBOOT 》

  INFO: Low Level Init: OK Starting main… AT45DB321 …

  Load CE-BOOT from Flash to SDRAM Jumping… –

  ==================================

  从现象上看,DATA FLASH现已找到了,也就阐明SPI线路是正确的,可是为什么读的数据有问题呢?

  置疑问题有如下几个:

  榜首:DATA FLASH的SPI自身硬件有问题,或许存在搅扰。

  第二:在从DATA FLASH复制数据到SDRAM中,呈现过错,数据不正确,SDRAM初始化有问题。 第三:因咱们的SPI线路和曾经的版别不同,采用了MAX3002进行了离隔,置疑MAX3002自身形成SPI线路的 不稳定。

  第四:CPU版别有问题,AT91SAM9263从A到B版别,SPI现已改过了,就我知道的是AT91SASM9263 B版其他SPI,需求两次复位才能够作业。

  一个一个置疑的问题进行验证:

  一:SAM BA 2.8能够对SDRAM进行初始化,都能够进行读写,阐明SDRAM自身硬件上无问题。

  第二:DATA FLASH ,SAMBA 2.8都能够进行读写,也无任何问题,一起发动代码能够正确履行。那么就应该能够证明SPI部分是能够作业的,可是问题在于AT91SAM9263 B版别内部的ROM BOOT和AT91SAM9263 A版其他ROM BOOT有不同,那么就证明说:在SPI这个部分的初始化部分做了批改。所以,找到AT91SAM9263 B版其他SPI部分的ERR DATA SHEET。找问题。改了半响代码,问题仍是仍旧。

  第三:真实没有方法了,2008年11月18日,找到百特的雷工,开端认定是CPU版其他问题,我自己以为自己的代码水平比较落后,恳求雷工帮助,最终验证成果如下:

  从DATA FLASH读出的数据,放到SDRAM后呈现了问题,咱们曾经的老板子,是无问题的。能够正确将数据从DATA FLASH读出来,然后,显现在串口上。每次从DATA FLASH中读10个字节,发现读出来的数据每次都是共同的,可是便是不正确。

  没有方法,雷工也是良久没有写代码了,只好约好第二天,到白特找他们的工程师刘工,刘工是我老乡,真的够朋友,那天晚上搞到深夜,最终验证出来,现象是:从DATA FLASH偏移0X8000地址中读取的数据放到SDRA M中,某一个方位找到差不多的数据。最终给出成果:或许是AT91SAM9263 B版别或许有问题,可是最大的问题是:SDRAM作业后,影响了SPI的稳定性。

  第四:太晚了,咱们都各自回家了(这个时分我找百特定好了A版其他CPU,说是他们现在没货,第二天能送来),真实是没有任何条理了,没有方法,从速定了CPU,AT91SAM9263 A版别,刚好,百特没有货,他们老板从香港定来后,咱们拿到,从速去贴上,这个进程不过是1天的时刻,下午了,下午3点就搞好,带上测验软件,跑到李工(咱们焊接的师傅)那里,把东西悉数架好,一测验,抑郁死了,居然仍是不可。天呀……

  第五:看来A版别也不可,那只能置疑是板的布线有问题了,由于没有其他方法能够想了,这个时分,我反倒放松了,由于我以为问题现已找到了。可是,到底是SPI的哪条线受到了搅扰呢?我对百特刘工的话坚信不已。真实没有方法,上午我从速拿着A版其他板子跑到百特,找到刘工,(想把他验证的成果再重演一下,刘工改了半响,发现是从DATA FALSH的0地址,读出来数据放到SDRAM中是无问题的,一向也置疑SDARM初始化有问题)依据这几天的测验成果,发现有一个疑点,我发现A版其他芯片,我写了一个小程序,从DATA FLASH中读取数据放到SRAM中也是不正确的。并且,和曾经的测验成果彻底相同。一向置疑和芯片有联系,现在看,能够彻底扫除芯片AT91SAM9263的问题了。

  第六:从DATA FLASH中读取数据放到SRAM中也是不正确的(我把SDRAM封闭了),我就推翻了刘工说的SDRAM对SPI DATA FLASH有搅扰主意。

  刘工发现是从DATA FALSH的0地址,读出来数据放到SDRAM中有大部分是相同的,这次把代码悉数恢复过来,把DATA FLASH的0地址的数据放到0X23F00000(LINUX引导程序U-BOOT的地址)-0X8000的方位,这样,就能够确保在0X23F00000的方位上,有正确的U-BOOT程序。可是,等程序运转起来,仍是没有得到正确的发动成果。有或许是有部分数据读出来后,仍是有不正确的。

  第七,真实是没有方法了,咱们开端置疑DATA FLASH有问题,刚好,我也问过咱们的LISA(LISA是咱们的收购,我本来一向以为这个DATA FLASH是从百特收购的,最终发现这个东西是从市场上收购来的,我很晕了,可是其时问LISA的时分,我没有放在心上,LISA说这个芯片是原装的),刚好我带上了一个咱们老版其他板子,将老版其他板的DATA FLASH换上去后,彻底OK了。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/jieda/178704.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部