1. 项目概述与核心价值
如果你在90年代末到21世纪初从事嵌入式系统开发,尤其是通信设备或工业控制领域,那么Motorola(后来的Freescale,现为NXP)的PowerQUICC系列处理器绝对是一个绕不开的名字。而MPC860ADS开发板,正是围绕这颗明星芯片MPC860构建的“瑞士军刀”级评估与开发平台。它不是一块简单的Demo板,而是一个功能完整、设计严谨的硬件参考系统,其用户手册本身就是一部浓缩了当时顶尖嵌入式硬件设计思想的“教科书”。
这份手册详细描述了MPC860ADS Rev B版的方方面面。其核心价值在于,它不仅仅告诉你“怎么连”,更深入解释了“为什么这么设计”。从电源时序、复位逻辑到复杂的内存控制器(UPM/GPCM)配置,从可编程逻辑器件(PLD)的方程到每个LED灯背后的控制信号,手册都提供了原理级的阐述。对于今天的开发者而言,研究这样的经典设计,能深刻理解在没有现成SoC集成度那么高的年代,如何用离散逻辑和精妙的软件配置,构建一个稳定可靠的嵌入式系统。它特别适合那些希望从硬件底层理解系统启动、内存管理、外设仲裁和调试接口的工程师,也是学习老式但经典的“CPU+PLD”硬件架构的绝佳案例。
2. 核心硬件架构与设计思路拆解
MPC860ADS的设计核心是模块化与灵活性。其架构可以清晰地划分为几个层次:以MPC860为中心的处理器子系统、由可编程逻辑(U10, U11)实现的板级控制与状态管理、各类存储与外设模块,以及为扩展和调试预留的丰富接口。
2.1 处理器核心:MPC860 PowerQUICC
MPC860是这款开发板的“大脑”,它并非一个简单的CPU,而是一个高度集成的通信处理器。
- 双核结构:它包含一个PowerPC架构的处理器核心(用于通用计算和控制)和一个独立的通信处理器模块(CPM)。CPM整合了多个串行通信控制器(SCC)、串行管理控制器(SMC)、一个SPI和一个I²C接口,这使得MPC860天生适合处理多路串行数据流,例如同时管理以太网、HDLC、UART等通道。
- 集成内存控制器:这是本板设计的基石。MPC860的内存控制器支持三种模式:通用片选机器(GPCM)、用户可编程机器(UPM)和SDRAM控制器。手册中大量的UPM初始化表格,正是为了驱动板载的DRAM SIMM。UPM允许开发者通过微代码(一系列控制字)来精确控制内存访问的时序,以适配不同速度、类型的存储器,这提供了极大的灵活性,但也带来了配置的复杂性。
- 系统接口单元(SIU):负责总线仲裁、时钟控制、复位管理和外部中断。开发板上的复位电路(软复位、硬复位)和时钟选择逻辑(通过DS1/4拨码开关选择4MHz晶振或32.768KHz晶体)最终都是服务于SIU的。
设计考量:选择MPC860意味着瞄准了通信和网络应用。开发板将其所有通信外设(SCC1用于以太网,SCC2用于红外,SMC1/2用于RS-232)都实际连接到了物理接口(通过MC68160 EEST等收发器),并提供了使能控制,允许用户在软件中禁用板载外设以释放引脚用于自定义功能。这种“可断开”的设计思想,贯穿了整个板卡。
2.2 神经中枢:板控制与状态寄存器(BCSR)
这是MPC860ADS设计中最精妙的部分之一,由一颗MACH220 CPLD(U11)实现。BCSR不是一个简单的寄存器,而是一个软硬件协同的配置与管理中心。
- 地址映射:BCSR被映射到固定的内存地址(0x0210 0000),CPU可以像访问普通内存一样读写它。
- 核心功能:
- 硬复位配置字(BCSR0):MPC860在上电或硬复位时,会从数据总线上采样一组配置信号,决定启动时钟模式、总线分频比、中断向量表位置等关键参数。BCSR0负责在复位期间驱动这些信号到数据总线上。更强大的是,它支持从Flash的首字读取配置(通过
FLASH_CFG_EN位),这为固件提供了修改启动参数的途径。 - 模块使能控制(BCSR1):这是动态重构硬件逻辑的关键。通过设置BCSR1的各个位,软件可以随时启用或禁用板载的Flash、DRAM、以太网、红外、RS-232、PCMCIA等模块。当一个模块被禁用时,其对应的MPC860引脚信号会通过缓冲器与板载电路隔离,并连接到扩展连接器(P6, P9, P10, P12)上,供用户自定义使用。这实现了硬件资源的“虚拟化”,极大扩展了开发板的用途。
- 状态读取(BCSR2/3):自动检测插入的DRAM和Flash SIMM的容量与速度(通过Presence Detect引脚),读取外部工具或拨码开关DS2的状态,以及报告板卡硬件版本号。软件可以根据这些信息动态初始化内存控制器等外设。
- 硬复位配置字(BCSR0):MPC860在上电或硬复位时,会从数据总线上采样一组配置信号,决定启动时钟模式、总线分频比、中断向量表位置等关键参数。BCSR0负责在复位期间驱动这些信号到数据总线上。更强大的是,它支持从Flash的首字读取配置(通过
实操心得:在编写板级支持包(BSP)时,第一件事就是读取BCSR2/3来识别内存型号,然后根据识别结果,从手册的表格中选取对应的UPM编程值和ORx/BRx寄存器值进行初始化。绝对不要写死初始化代码,必须支持自动检测。
2.3 存储子系统设计
存储系统体现了性能与成本的平衡。
- DRAM子系统:使用72线SIMM插槽,支持4MB到32MB的FPM/EDO DRAM。设计难点在于地址线复用和可变数据宽度(16/32位)支持。手册中
U10(另一片MACH220)的逻辑方程显示,它根据BCSR1中的Dram_Half_Word信号和SIMM的容量检测引脚,动态切换地址线A9/A10的连接(连接到MPC的A20/A30或A30/A19)。UPM则负责产生复杂的RAS、CAS、WE时序。特别注意:UPM的编程序列(Microcode)需要根据DRAM的具体时序参数(如tRCD, tRP, tCAS)和系统时钟(25/50MHz)精心计算,手册提供的表格是经过验证的参考值,但若更换不同型号内存,可能需要重新计算。 - Flash子系统:使用80线SIMM插槽,支持2MB到8MB的Nor Flash。U10同样负责根据Flash容量检测引脚,将MPC的
CS0片选信号解码为多个Flash芯片的片选(F_CS1~~F_CS4~)。Flash的写操作需要遵循特定的命令序列(如Intel的Word/Word Program算法),这部分由软件驱动实现。
2.4 调试与开发支持架构
MPC860ADS不仅是一个目标板,自身还集成了一个调试端口控制器(DPC),由U7(第三片MACH220)实现。
- ADI接口:这是Motorola标准的调试接口,通过一个37针D型口(P1)连接到主机(PC或工作站)的ADI卡。DPC在ADI的并行协议和MPC860的JTAG调试串行协议之间进行转换。
- 双模式运行:
- 主机控制模式:MPC860在座,通过ADI接口连接主机调试器(如SingleStep, CodeWarrior)。开发者可以进行下载代码、设置断点、查看内存寄存器等所有调试操作。
- 独立运行模式:拔掉ADI电缆,MPC860从本地Flash启动,运行用户固件。
- 调试站模式:这是一个关键且危险的功能。将板上的MPC860芯片物理移除,通过一个10针的调试端口(P5)连接到另一块目标板。此时,MPC860ADS变身为一个独立的“调试探针”,可以调试目标板上的MPC8xx系列CPU。手册用大写的WARNING强调,此模式下必须移除本地MPC860,否则会因信号冲突导致永久损坏。
- 灵活的时钟:调试时钟(DSCK)频率可以通过BCSR中的
DebugClockFreq字段编程选择(10/5/2.5/1.25 MHz),以适应不同速度的目标系统。
3. 关键硬件配置与实操要点
3.1 上电前检查与跳线设置
在给板卡通电前,必须根据你的应用场景检查并设置几个关键跳线:
- J1 (Power-On Reset源选择):选择上电复位信号来源。跳线1-2选择“保持激活电源”轨(KAPWR),跳线2-3选择主3.3V电源轨。这取决于你使用的MPC860版本对复位时序的要求。通常,如果使用外部电池保持RTC/配置,应选择KAPWR。
- J2 (VDDL源选择):选择MPC860核心逻辑电压。跳线1-2选择3.3V,跳线2-3选择2.0V。务必确认你的MPC860芯片型号支持的核电压,错误的设置会损坏CPU。
- J3 (保持激活电源源选择):选择KAPWR的来源。跳线1-2使用板载3.3V,跳线2-3允许连接外部电池(正极接2,负极接3),用于在主板断电时保持实时时钟和关键配置。
- DS1 (配置拨码开关):
- SW1-3:设置ADI从机地址(0-7),允许多块ADS板通过一条ADI总线级联。
- SW4:至关重要的时钟源选择。ON位置选择32.768KHz晶体,PLL倍频513倍(约16.8MHz内核时钟,用于极低功耗);OFF位置选择板载4MHz有源晶振,PLL倍频5倍(20MHz内核时钟)。这个选择直接影响
MODCK[1:2]复位配置和PLL滤波电容(通过模拟开关切换),选错可能导致PLL无法锁频或系统时钟异常。
注意事项:在改变J1、J2、J3跳线或DS1开关设置时,务必断开板卡电源。带电操作可能引起瞬间短路或信号竞争,损坏器件。
3.2 内存安装与识别
板卡出厂时,DRAM和Flash SIMM模块是单独包装的,需要用户自行安装。
- 识别SIMM类型:72线插座是DRAM,80线插座是Flash。SIMM金手指一端有防呆缺口,对准插座上的凸起。
- 安装:将SIMM以约30度角插入插座,确保完全就位,然后轻轻向后扳动直至两侧卡扣锁紧。切忌用力过猛或未对准就按压。
- 系统识别:上电后,调试器或你的启动代码应首先读取BCSR2的
DRAM_PD[4:1]和FLASH_PD[7:1]字段。这些值直接来自SIMM上的“存在检测”引脚。你需要根据手册中的编码表(Table 4-9, 4-10, 4-11, 4-15)来解析内存的容量和速度。例如,DRAM_PD[4:3]=11表示60ns,DRAM_PD[2:1]=00表示4MB SIMM(MCM36100)。
3.3 电源连接与测量
板卡需要两组输入电源:
- P7 (+5V @ 最大3A):这是主电源,为大部分逻辑电路、接口芯片和5V稳压器供电。连接时注意极性(1脚+5V,2、3脚GND)。建议使用稳压精度高、噪声小的实验室电源。
- P8 (+12V @ 最大1A):可选。仅当需要为PCMCIA卡或某些型号的Flash SIMM(如SMART系列)提供编程电压(VPP)时才需要连接。如果只用板载功能或5V可编程Flash,可以不接。
实操技巧:板上有一个焊接的跳线J4,串联在3.3V总线上。如果你想精确测量MPC860及周边芯片的3.3V功耗,可以用烙铁小心地移除这个跳线,串联电流表。务必做好绝缘,防止短路。
3.4 复位与启动流程解析
理解复位流程是让板卡“跑起来”的第一步。
- 上电复位(PORESET):电源稳定后,复位发生电路(U5, U36)产生一个约4秒的低电平脉冲给MPC860的
PORESET引脚。在此复位期间,MPC采样MODCK[1:2]引脚(由U10根据DS1/4驱动)以确定时钟模式。 - 硬复位(HRESET):可由以下情况触发:上电、按下SW1+SW2、通过ADI口发送硬复位命令、或MPC内部看门狗超时。硬复位期间,
RSTCONF信号有效,MPC从数据总线D[0:31]采样硬复位配置字。这个字由BCSR0寄存器提供(若FLASH_CFG_EN为低,则从Flash首字读取)。该配置字决定了中断向量表位置、引导存储区位宽、调试口映射等关键系统参数。 - 软复位(SRESET):按下SW1或通过调试口发送软复位命令触发。它只复位MPC内核和部分外设,而不改变内存控制器和PLL的配置,因此DRAM内容得以保持。软复位后,MPC会采样调试口配置(是否进入调试模式)。
排查要点:如果系统无法启动,首先检查所有电源电压(5V, 3.3V, 2V/3.3V@J2)是否正常、稳定。然后用示波器观察PORESET和HRESET信号是否有完整的低脉冲。最后确认MODCK[1:2]在复位期间的电平是否符合你的时钟选择。
4. 软件初始化与寄存器编程实战
手册第3.4节提供了详尽的寄存器初始化表格,但必须理解其背后的逻辑才能灵活运用。
4.1 内存控制器初始化详解
以在50MHz系统时钟下,初始化一个60ns的4MB EDO DRAM(MCM36100)为例:
- 确定内存基址和大小:我们使用CS2(
BR2)来覆盖4MB空间,基址为0x0000 0000。 - 配置
OR2(选项寄存器):AM(地址掩码):对于4MB空间,地址线A22-A31应用来译码。4MB = 2^22字节,所以需要屏蔽A22以上的位。OR2的AM字段是反向掩码,即需要为1的位是A22-A31。计算:AM = (0xFFFFFFFF << 22) = 0xFFC00000。但OR2的AM字段只取高17位(A15-A31),并且AM[16:17]有特殊含义。对于UPM模式,AM[16:17]应设为00。所以最终OR2值的高位是0xFFC0。SCY(读/写周期长度):对于60ns DRAM @ 50MHz (20ns周期),手册Table 3-4给出的UPM序列中,单次读/写需要多个时钟。OR2中的SCY字段在UPM模式下被忽略,时序完全由UPM微代码决定,所以这里可以设为0。BFT/BSE:与UPM无关。- 最终,参考Table 3-3,对于MCM36100,
OR2初始化为0xFFC00800。其中0x0800部分设置了GPLx等功能。
- 配置
BR2(基址寄存器):BA(基址):设为0x0000 0000。PS(端口大小):32位,对应0b10。PAR(奇偶校验):禁用。WP(写保护):禁用。MS(机器选择):UPM模式,对应0b01。- 最终,
BR2 = 0x0000 0081(0b1000 0001)。
- 配置
MAMR(UPM模式寄存器):AM(地址复用模式):对于MCM36100(1Mx4 x 2 banks),是Type 2复用(行地址A10-A0,列地址A9-A0)。对应AMA = 0b010。OP(操作模式):正常模式。DSA/DBW:与UPM无关。GPL_x:根据UPM序列需要设置。手册中设为0xA2。RLFx:读/写循环因子。设为0x11(1个循环用于读和写)。RFEN:刷新使能。RFx:刷新计数器预分频。计算公式见手册4.7.3节。对于50MHz BRGCLK (40ns),16ms刷新1024行,每行刷新时间=15.625µs。使用4拍刷新突发,PTA预分频值 = (15.625µs / (4 * 40ns)) / MPTPR值。手册计算后给出0x40(十进制64)。所以MAMR = 0x40A21114。
- 编程UPM RAM:这是最复杂的部分。UPM RAM存储了控制FSM状态的微代码。每个命令字(32位)定义了在特定时钟周期,所有UPM输出引脚(
GPLx,CSx,BS_Ax,WE等)的电平。手册Table 3-4提供了针对60ns DRAM @ 50MHz的完整UPM数组。你需要将这个数组(从偏移0x00到0x3F)逐个写入MPC860的UPM内存阵列(通过MDR寄存器配合MCR命令)。例如,单次读的序列起始于UPM地址0x00。
关键技巧:在初始化UPM前,必须确保MPC860运行在正确的频率下,并且已经配置了MPTPR(内存周期定时器预分频寄存器)来产生BRGCLK。通常,初始化代码需要先配置SIUMCR、SYPCR等系统寄存器,然后设置MPTPR和MAMR,最后用循环将UPM数组写入UPM RAM。
4.2 BCSR的典型操作流程
BCSR是软件与硬件交互的桥梁。
- 初始化外设使能:上电后,你可能需要先禁用所有板载外设,以便将MPC引脚用于你自己的扩展板。
// 假设BCSR基地址为0x02100000 volatile uint32_t *bcsr1 = (volatile uint32_t *)0x02100004; // 读取当前值,然后禁用Flash, DRAM, Ethernet, IR, RS232, PCMCIA,但保持BCSR自身使能 uint32_t val = *bcsr1; val |= 0x00003F9F; // 设置FlashEn~, DramEn~, EthEn~, IrdEn~, RS232En1~, RS232En2~, PccEn~ 位 (均为低有效,写1禁用) val &= ~0x00000040; // 确保BCSR_EN~位为0 (使能BCSR) *bcsr1 = val; - 动态切换DRAM位宽:如果你想将32位DRAM用作16位端口以节省引脚或测试。
// 1. 设置BCSR1的Dram_Half_Word位 val = *bcsr1; val |= 0x00001000; // 设置Dram_Half_Word位 (低有效,写1表示16位) *bcsr1 = val; // 2. 修改BR2/BR3的PS字段为16位 (0b01) // 3. 修改OR2/OR3的AM字段,因为地址线连接改变了 // **注意**:执行这段代码时,代码本身不能位于即将被重配置的DRAM中!通常需在SRAM或Flash中运行。 - 读取板卡信息:
volatile uint32_t *bcsr2 = (volatile uint32_t *)0x02100008; volatile uint32_t *bcsr3 = (volatile uint32_t *)0x0210000C; uint32_t status1 = *bcsr2; uint32_t status2 = *bcsr3; uint8_t dram_size_code = (status1 >> 5) & 0x03; uint8_t dram_speed_code = (status1 >> 7) & 0x03; uint8_t flash_type_code = (status1 >> 0) & 0x0F; uint8_t flash_speed_code = (status2 >> 9) & 0x07; uint8_t board_rev = (status2 >> 12) & 0x0F; // 根据编码表解析具体型号和速度
5. 外设接口使用与避坑指南
5.1 以太网接口(SCC1 + MC68160)
MPC860的SCC1被配置为以太网控制器,通过MC68160 EEST物理层芯片连接至RJ45接口。
- 软件配置:除了配置SCC1的协议模式(以太网)、波特率等,还需要通过MPC的并行I/O引脚
PC4、PC5、PC6控制EEST的辅助功能:PC4(ETHLOOP):置低为正常模式,置高为环回测试模式。PC5(TPFLDL~):置低使能全双工模式(需对端支持)。PC6(TPSQEL~):置低使能信号质量错误测试(每发送一帧后自检冲突检测电路)。正常运行时必须置高。
- 硬件检查:如果网络不通,首先检查
LD4(ETH ON)指示灯是否亮起(取决于BCSR1的ETHEN位)。然后检查LD11(LIL,链路指示灯),它由EEST驱动,亮起表示物理链路正常。LD5(RX)和LD6(TX)应在有数据时闪烁。
5.2 PCMCIA接口
这是一个完整的PCMCIA 2.1+兼容接口,支持5V卡。
- 电源管理:由LTC1315芯片控制。务必遵循“先检测,后上电”的流程:
- 插入卡后,读取
CD1~和CD2~(在BCSR中可读)确认卡已就位。 - 读取
VS1和VS2(电压检测引脚)判断卡所需电压。如果卡需要3.3V,绝对不可给其5V供电! - 通过写BCSR1的
PCCVCCON位给卡上电(5V)。 - 通过
PCCVPP[1:0]位选择编程电压(0V, 5V, 12V, 高阻)。
- 插入卡后,读取
- 信号缓冲:所有地址、数据、控制线都经过74ACT系列缓冲器。只有当
PCCEN位使能时,这些缓冲器才被激活。这避免了当PCMCIA接口未被使用时,缓冲器输出与用户扩展电路冲突。
5.3 扩展连接器(P6, P9, P10, P12)的使用
这是发挥MPC860ADS潜力的关键。这些连接器将MPC860的几乎所有信号(除电源和地)引出来。
- 电气特性:信号电压为3.3V CMOS电平。驱动能力有限,连接长电缆或大负载时需要外加缓冲。
- 与板载资源复用:当通过BCSR1禁用某个板载模块(如以太网、Flash)后,对应的MPC引脚信号就会出现在扩展连接器上。例如,禁用以太网(
ETHEN=1)后,SCC1的RXD1、TXD1、CTS1等引脚就可以在P10连接器上用作通用I/O或其他功能。 - 调试口信号:
VFLS0、VFLS1、DSDI、DSDO、DSCK、SRESET~、HRESET~等调试信号也引出了。你可以用它们连接自定义的JTAG调试器,或者监控CPU的调试状态。
一个常见的坑:EXTOLI[0:3]这四个“外部工具识别”引脚,它们被连接到BCSR2作为输入,同时也连接到了拨码开关DS2。这意味着,任何连接到这些引脚的外部电路,只能驱动低电平,绝不能驱动高电平!因为当DS2拨到ON位置时,内部会将线路拉低。外部驱动高电平会造成电流冲突,损坏芯片。安全做法是外部电路使用开漏输出,或者仅将这些线作为输入(读取DS2状态)。
6. 作为调试站使用:关键步骤与风险控制
将MPC860ADS用作独立调试器(Debug Station)来调试其他目标板,是一个强大但高风险的操作。
- 安全第一:必须先将主板上的MPC860芯片(U18)从BGA插座上移除。这是手册反复强调的,因为
DSDO等信号是双向的,两块MPC860同时驱动会导致短路。 - 连接:使用10芯扁平电缆,将ADS上的P5(调试端口)连接到目标板上对应的10针JTAG调试头。确保引脚1对1连接。
- 目标板要求:目标板上的MPC8xx的调试口必须配置在JTAG引脚上(通过硬复位配置字
DBPC字段),并且DSDI、DSCK上需要接约2kΩ的下拉电阻,以确保在不连接调试器时CPU能从Flash正常启动。 - 供电:给MPC860ADS上电(+5V),并通过ADI口连接主机调试软件。目标板可以独立供电,也可以尝试从ADS的扩展连接器取电(注意电流限制)。
- 操作:此时,主机调试软件通过ADS上的U7(调试端口控制器)与目标板CPU通信。你可以像调试本地CPU一样进行下载、单步、断点等操作。ADS板上的复位按钮(SW1, SW2)也可以用来复位目标系统。
7. 常见问题与硬件调试实录
问题:上电后无任何反应,所有LED不亮。
- 检查:首先测量P7的5V输入是否正常。然后测量板上的3.3V(LD16应亮)、2V(如果J2选择)等各路电压。检查保险丝F1、F2是否熔断。确认MPC860是否已正确插入BGA插座(对于Rev B板,是焊接的,无需检查)。
- 深入:如果电源正常,用示波器检查32.768kHz晶体或4MHz有源晶振是否起振。测量MPC860的
CLKOUT引脚是否有时钟输出(频率应为内核频率的一半)。
问题:通过ADI连接调试器失败,无法识别板卡。
- 检查:确认DS1的地址拨码开关设置与调试软件中设置的从机地址一致。测量ADI接口的
HOST_VCC(引脚27-29)是否有来自主机的5V电压,HOST_ENABLE~(引脚30)是否为低。这两者是U7(调试控制器)工作的使能条件。 - 检查:确认MPC860的调试口是否配置在JTAG引脚上(检查BCSR0或Flash中的硬复位配置字
DBPC字段应为00)。
- 检查:确认DS1的地址拨码开关设置与调试软件中设置的从机地址一致。测量ADI接口的
问题:DRAM初始化失败,系统在内存测试时挂起。
- 检查:首先通过BCSR2确认系统是否正确识别了DRAM SIMM的类型和速度。对比手册Table 3-3/3-8,确认你为当前系统时钟(25或50MHz)和DRAM速度(60或70ns)选择了正确的
OR2、MAMR和UPM数组。 - 测量:用逻辑分析仪或示波器抓取
RAS、CAS、WE、地址线和数据线的时序。与DRAM数据手册的时序图(如tRCD, tCAS, tRP)进行对比。UPM微代码中的等待状态数可能不足。 - 调整:如果时序边缘有振铃或过冲,可能是SIMM插座接触不良或信号完整性问题。确保SIMM安装牢固。
- 检查:首先通过BCSR2确认系统是否正确识别了DRAM SIMM的类型和速度。对比手册Table 3-3/3-8,确认你为当前系统时钟(25或50MHz)和DRAM速度(60或70ns)选择了正确的
问题:Flash编程或擦除失败。
- 检查:确认Flash型号。如果是SMART的Flash(如SM732A2000),它需要12V编程电压(VPP)。你必须连接P8的12V电源,并通过BCSR1正确设置
PCCVPP[1:0]为10(12V)。对于5V可编程的Flash(如MCM29F系列),则不需要12V。 - 检查:Flash的写保护位是否被意外锁住。需要发送特定的解锁命令序列。
- 时序:Flash访问时序(
OR0中的SCY字段)必须满足Flash芯片的读/写周期时间。对于90ns Flash,在50MHz下至少需要5个等待状态(SCY=5)。
- 检查:确认Flash型号。如果是SMART的Flash(如SM732A2000),它需要12V编程电压(VPP)。你必须连接P8的12V电源,并通过BCSR1正确设置
问题:使用扩展接口时,板载功能异常。
- 检查:你是否在软件中通过BCSR1禁用了对应的板载模块?例如,如果你想使用P10上的
PA15引脚作为通用I/O,你必须先设置BCSR1.ETHEN = 1来禁用以太网模块,否则PA15被EEST占用,输出冲突。 - 检查:扩展板是否与ADS板共地?信号电平是否是3.3V?是否有信号线短路到电源或地?
- 检查:你是否在软件中通过BCSR1禁用了对应的板载模块?例如,如果你想使用P10上的
这份MPC860ADS用户手册虽然年代久远,但其硬件设计的模块化思想、软硬件协同的配置方法、以及对调试支持的重视,至今仍具有很高的参考价值。它要求开发者不仅懂软件,更要懂硬件,能够深入到时序、电气和逻辑方程层面去解决问题。通过彻底吃透这份手册,你获得的将不仅仅是如何使用一块特定的开发板,更是一种扎实的嵌入式系统硬件调试与整合能力。