MAX195 16位ADC可通过串行接口与德州仪器的TMS320C30 DSP连接。接口使用四线加地线。本应用说明解释了如何将MAX194/MAX195评估套件连接到TMS320C3X评估模块。
示例程序使用TMS320C3X/4X COFF汇编器4.50版本和TMS320C3X/4F COFF链接器4.50版本进行组装(版权由德州仪器公司1987年至1992年)。
Maxim的MAX194/MAX195评估套件可以通过以下方式连接到德州仪器的TMS320C3X评估模块:
根据表1设置MAX194/MAX195 EVKIT跳线。
将2-x-5引脚焊带焊接到MAX194/MAX195 EVKIT区域J3。PC板已连线,如表2所示。
为MAX194/MAX195 EVKIT连接+5V电源。
在TMS320C3X EVM和MAX194/MAX195 EVKIT之间连接10针带状电缆。
运行demo软件。
跳投 | 位置 | 函数 |
JU1 | 关闭 | 将MAX195 SCLK连接到地 |
JU3 | EXT | TMS320 CLKR1驱动MAX195转换时钟。 |
JU4 | Cs = GND | MAX195 Active-Low CS接地 |
JU5 | QSPI | TMS320 XF1驱动MAX195 CONV。 |
JU6 | 开放 | MAX195复位/校准命令 |
JU7 | UNI或OPEN | 选择单极或双极传递函数 |
销 | MAX195 | TMS320 | 销 | MAX195 | TMS320 |
1 | DGND | 接地 | 2 | 校验曲线端 | FSR1 |
3. | 不习惯 | 4 | DOUT | 根据DR1 | |
5 | 不习惯 | 6 | 不习惯 | ||
7 | 不习惯 | 8 | CONV校验 | XF1 | |
9 | CONCLK | CLKR1 | 10 | DGND | 接地 |
演示软件(请参阅下面的程序代码清单)配置TMS320C30,使FSR1和DR1为输入,CLKR1和XF1为输出。该软件使用XF1输出来启动转换。XF1脉冲驱动MAX194/MAX195转换开始输入。CLKR1输出提供到MAX194/MAX195的转换时钟。从MAX194/MAX195输出的数据在DR1输入端接收。FSR1帧开始信号由MAX194/MAX195 EOC(转换结束)信号驱动,该信号标志着串行帧的开始。
为了读取MAX194/MAX195,软件会短暂地将XF1输出调低。演示软件轮询串行接收器,直到接收到完整的帧。因为这只是一个接口演示,所以软件只是将接收到的数据字写入EVM主机数据端口。
TMS320C30串口初始化
项目名称:MAX195 EVKIT接口到TMS320C3X EVM
项目文件= MAX195I
文件名= MAX195I。ASM
命令文件= MAX195I。CMD
用以下命令编译:
asm30 MAX195I - 1
lnk30 MAX195I。CMD
销作业:
注:跳线JU8必须为OPEN
和CS必须连接到GND
时序图:
最快时钟1MHz = (1 / 1000 nsec)
最小接收定时器周期= 4H
接收定时器周期= 4 = 0.9375MHz
(系统时钟频率= 30MHz)
词图:
.节“向量”重置。word初始化成0 .word初始化成1 .word初始化成2 .word初始化成3 .word初始化xint0 .word初始化rint0 .word初始化xint1 .word初始化rint1 .word初始化tint1 .word初始化indt .word初始化indt .data STCK .word 0809F00H;初始堆栈指针CTRL .word 0808000H;外设接口基址HOST_DATA .word 0804000H;主机数据端口地址IOF_AMASK .set 0000EH;清除IOF寄存器IOF_SET_XF1 .set 00060H中的所有XF1位;使XF1引脚输出;value = 1 IOF_RESET_XF1 .set 00020H;使XF1引脚输出;value = 0 IOF_INPUT_XF1 .set 00080H;使XF1引脚为输入;读取其值fs_ask .set 0F0FFH;FS引脚的掩码SET_FS .set 00600H;RESET_FS .set 00200H;使FS为低输出GET_FS .set 00800H;FS引脚的输入掩码D_AMASK .set 0FF0FH;数据引脚掩码SET_D .set 00060H;使D为高输出RESET_D .set 00020H;使D为低输出GET_D .set 00080H;D引脚的输入掩码clk_ask .set 0FFF0H;CLK引脚的掩码SET_CLK .set 00006H;RESET_CLK .set 00002H;GET_CLK .set 00008H;CLK引脚串口全局控制寄存器SerGlob1 .word 08100280H 08000000H: RRESET -复位/启用接收器0080H: RCLKSRCE -使用内部接收时钟(CLKR引脚是输出)0200H: RVAREN -接收器可变数据率00100000H:RLEN = 2字节(16位)FSX, CLKX, DX的引脚分配寄存器SerPrtX1 .word 00H将CLKX引脚分配给一般I/O使CLKX作为输入将DX引脚分配给一般I/O使DX作为输入将FSX引脚分配给一般I/O使FSX作为输入引脚分配寄存器为FSR, CLKR, DR SerPrtR1 .word 0111H 0001H:将CLKR引脚分配给串口时钟0010H:将DR引脚分配给串口接收数据0100H分配FSR引脚到串口帧启动串口定时器全局控制寄存器SerTim1 .word 03C0H XHLD 0=保持发送定时器XC/P 0=脉冲模式XCLKSRC 0=CLKX引脚增加计数器0040H: RGO=1—启动接收定时器0080H: RHLD 1=运行接收定时器0100H: RC/P 1=时钟(50%占空比)0200H: RCLKSRC 1=使用7.5MHz时基(30MHz系统时钟/4)串口定时器周期寄存器SerTim1Val .word 040000H:发送计数器周期4h:接收计数器周期接收定时器周期= 4 = 0.9375MHz .text init LDI 0,ST;初始化状态寄存器LDI 0,DP;点数据页指针到从LDI @STCK,SP初始化堆栈指针;以XF1高起始;Ldi iof, r1;得到XF1设置和IOF_AMASK,R1;不要触摸XF0设置或IOF_SET_XF1,R1;使XF1输出高值LDI R1,IOF;编写新的XF1设置;初始化串口;Ldi @ctrl, ar0;外围接口地址LDI @HOST_DATA,AR1;主机接口地址LDI @SerTim1Val,R0 STI R0,*+AR0(86);串行ch1定时器周期LDI @SerGlob1,R0 STI R0,*+AR0(80);串行全局寄存器LDI @SerPrtX1,R0 STI R0,*+AR0(82);串行发送控制寄存器LDI @SerPrtR1,R0 STI R0,*+AR0(83);串行接收控制寄存器LDI @SerTim1,R0 STI R0,*+AR0(84);串行ch1定时器寄存器XF1信号被命名为Active-Low CONV到MAX195 EVKIT这就是我们如何设置XF1: LDI IOF,R1;得到XF1设置和IOF_AMASK,R1;不要触摸XF0设置或IOF_SET_XF1,R1;使XF1输出高值LDI R1,IOF;写新的XF1设置这就是我们如何清除XF1: LDI IOF,R1;得到XF1设置和IOF_AMASK,R1;不要触摸XF0设置或IOF_RESET_XF1,R1;使XF1输出低值LDI R1,IOF;写入新的XF1设置next_sample:生成转换启动脉冲LDI IOF,R1;得到XF1设置和IOF_AMASK,R1;不要触摸XF0设置或IOF_RESET_XF1,R1;使XF1输出低值LDI R1,IOF;写新的XF1设置和IOF_AMASK,R1;不要触摸XF0设置或IOF_SET_XF1,R1;使XF1输出高值LDI R1,IOF;写入新的XF1设置等待,直到串行接收完成环路LDI *+AR0(80),R2;读取全局控制寄存器AND 01H,R2;测试接收机就绪位BZ环;循环直到接收到数据,得到接收到的数据LDI *+AR0(92),R3;将接收到的数据复制到R3这个演示应用程序不进行任何处理——它只是使TMS320C3X EVM的主机可以使用该值。*+ ar1 (0);发送R3到主机LDI 100,R0;1,R0 BNZ wait_loop BR @next_sample;这个程序永远运行
图1所示 示意图
图2 时机