好文档 - 专业文书写作范文服务资料分享网站

8位USB和RGB-LED MS51单片机CH555手册 - 图文

天下 分享 时间: 加入收藏 我要投稿 点赞

46

配置步骤:

(1)、设置SPI时钟分频设置寄存器SPI0_CK_SE,配置SPI时钟频率。

(2)、设置SPI设置寄存器SPI0_SETUP的位bS0_MODE_SLV为0,配置为主机模式。

(3)、设置SPI控制寄存器SPI0_CTRL的位bS0_MST_CLK,根据需求设置为模式0或者3。

(4)、设置SPI控制寄存器SPI0_CTRL的位bS0_SCK_OE和bS0_MOSI_OE为1,bS0_MISO_OE位为0,

设置P1端口方向bSCK、bMOSI为输出,bMISO为输入,以及片选引脚为输出。 数据发送过程:

(1)、写SPI0_DATA寄存器,向FIFO写入要发送的数据,自动启动一次SPI传输。 (2)、等待S0_FREE为1,说明发送完成,可以继续发送下一字节。

数据接收过程:

(1)、写SPI0_DATA寄存器,向FIFO写入任意数据例如0FFh以启动一次SPI传输。 (2)、等待S0_FREE为1,说明接收完成,可以读取SPI0_DATA获得接收到的数据。

(3)、如果之前bS0_DATA_DIR已置1,则上述读操作也会启动下一次SPI传输,否则不启动。

14.4.2 SPI从机模式配置

从机模式下,SCK引脚用于接收连接的SPI主机的串行时钟。

(1)、设置SPI0设置寄存器SPI0_SETUP的位bS0_MODE_SLV为1,配置为从机模式。

(2)、设置SPI0控制寄存器SPI0_CTRL的位bS0_SCK_OE和bS0_MOSI_OE为0,设置bS0_MISO_OE为

1,设置P1端口方向bSCK、bMOSI和bMISO以及片选引脚都为输入。当SCS片选有效(低电平)时,MISO将自动使能输出。同时建议设置MISO引脚为高阻输入模式(P1_MOD_OC[6]=0、P1_DIR_PU[6]=0),使MISO在片选无效期间不输出,便于共享SPI总线。

(3)、可选的,设置SPI从机模式预置数据存器SPI0_S_PRE,用于被片选后首次自动加载到缓冲区

中用于对外输出。在8个串行时钟之后,即首个数据字节传输交换完毕,CH555得到外部SPI主机发来的首字节数据(可能是命令码),外部SPI主机交换得到SPI0_S_PRE中的预置数据(可能是状态值)。寄存器SPI0_S_PRE的位7将在SPI片选有效后的SCK低电平期间自动加载到MISO引脚上,对于SPI模式0,如果CH555预置了SPI0_S_PRE的位7,那么外部SPI主机将在SPI片选有效但尚未传输数据时,就能够通过查询MISO引脚得到SPI0_S_PRE的位7的预置值,从而通过仅仅有效一下SPI片选就能获得SPI0_S_PRE的位7的值。

数据发送过程:

查询S0_IF_BYTE或者等待中断,在每次SPI数据字节传输完成后,写SPI0_DATA寄存器,向FIFO写入要发送的数据。或者等待S0_FREE从0变为1,可以继续发送下一字节。

数据接收过程:

查询S0_IF_BYTE或者等待中断,在每次SPI数据字节传输完成后,读SPI0_DATA寄存器,从FIFO获得接收到的数据。查询S0_R_FIFO可以获知FIFO中是否有剩余字节。

15、模数转换器ADC

15.1 ADC和CMP简介

CH555芯片提供12位的模拟数字转换器,包括模数转换器ADC和电压比较器CMP模块。 该ADC具有14个外部模拟信号输入通道和2个内部输入通道(参考电压),可以分时采集,支持0到VDD模拟输入电压范围。

该CMP的正相输入端有两种输入选择:当bCMP_PIN=1时选择经电阻分压连接到上述ADC模拟输入通道;当bCMP_PIN=0时选择经电阻分压输入VDD电源。反相输入端由MASK_CMP_VREF选择参考电

47

压,该CMP一般主要用于电源电压监测和DC-DC控制,参考7.2节。

15.2 ADC寄存器

表15.2.1 ADC相关寄存器列表

名称 ADC_CTRL ADC_DAT_H ADC_DAT_L ADC_DAT ADC_CHAN

地址 F3h F5h F4h F4h F6h

ADC控制和状态寄存器 ADC结果数据的高字节(只读) ADC结果数据的低字节(只读)

ADC_DAT_L和ADC_DAT_H组成16位SFR ADC模拟信号通道选择寄存器

描述

复位值 xxh 0xh xxh 0xxxh 00h

ADC控制和状态寄存器(ADC_CTRL):

位 [7:6] 5 4 3 2 1 0

表15.2.2 ADC参考时钟频率选择表

bADC_CLK1 bADC_CLK0 ADC参考时钟频率 完成一次ADC所需时间

0 0 1 1

0 1 0 1

750KHz 1.5MHz 3MHz 6MHz

512个Fosc周期 256个Fosc周期 128个Fosc周期 64个Fosc周期

适用范围

Rs<=20KΩ或Cs>=0.08uF Rs<=10KΩ或Cs>=0.08uF VDD>=3V并且

(Rs<=5KΩ或Cs>=0.08uF) VDD>=4.5V并且

(Rs<=2KΩ或Cs>=0.08uF)

名称 保留 bADC_IF bADC_START bADC_EN 保留 bADC_CLK1 bADC_CLK0

访问 R0 RW RW RW R0 RW RW

保留

ADC转换完成中断标志,该位为1表示一次ADC转

换完成,写1清零或写ADC_CHAN数据时清零 ADC启动控制位,置1启动一次ADC转换,该位在ADC转换完成后自动清零

ADC模块的电源控制位,该位为0表示关闭ADC模块的电源,进入睡眠状态;该位为1表示开启 保留

ADC参考时钟频率选择高位 ADC参考时钟频率选择低位

描述

复位值 00b 0 0 0 0 0 0

注:VDD指电源电压,Cs指信号源并联电容值,Rs指信号源串联内阻值(采样时间仅4个参考时钟)

ADC模拟信号通道选择寄存器(ADC_CHAN):

位 [7:4] [3:0]

表15.2.1 电压比较器CMP正相输入端和ADC输入外部信号通道选择表

bADC_EN 0 1

ADC_CHAN xxxxb 0000b

选择模拟信号通道的信号源

断开内部和外部信号通道(AIN0~AIN13),悬空 连接到外部信号:AIN0(P1.0)

名称 保留 MASK_ADC_CHAN

访问 R0 RW

保留

当bADC_EN=1时选择模拟信号通道的信号源; 当bADC_EN=0时模拟信号通道关闭

描述

复位值 0000b 0000b

48

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

0001b 0010b 0011b 0100b 0101b 0110b 0111b 1000b 1001b 1010b 1011b 1100b 1101b 1110b 1111b

连接到外部信号:AIN1(P1.1) 连接到外部信号:AIN2(P1.2) 连接到外部信号:AIN3(P1.3) 连接到外部信号:AIN4(P1.4) 连接到外部信号:AIN5(P1.5) 连接到外部信号:AIN6(P1.6) 连接到外部信号:AIN7(P1.7) 连接到外部信号:AIN8(P0.0) 连接到外部信号:AIN9(P0.1) 连接到外部信号:AIN10(P0.2) 连接到外部信号:AIN11(P0.3) 连接到外部信号:AIN12(P0.4) 连接到外部信号:AIN13(P0.5) 连接到内部参考电压:V33电压

连接到内部参考电压:1.8V电压VREF18(可能有噪声)

ADC数据寄存器(ADC_DAT):

位 [7:0] [7:0]

名称 ADC_DAT_H ADC_DAT_L

访问 RO RO

描述

ADC采样结果数据的高字节 ADC采样结果数据的低字节

复位值 0xh xxh

49

ADC_CHANAIN0AIN1AIN2AIN3~AIN12AIN13V33VREF18VDDbCMP_PIN0000--0001—1/16MUX1110--1111--bADC_STARTsampleRswCaGNDbADC_ENto_interruptbADC_CLK1/0clocksample----- D0~D11VIN ADC ADC_ENDADC_DATRMASK_CMP_VREFRMUXRIN+ CMPIN-RVREF_1.2VGNDbCMP_RESULT

图15.2.1 ADC结构图(蓝色线为模拟信号)

15.3 ADC功能

ADC采样模式配置步骤:

(1)、设置ADC_CTRL寄存器中的bADC_EN位为1,开启ADC模块,设置bADC_CLK0/1选择频率。 (2)、设置ADC_CHAN寄存器,选择外部或内部信号通道。

(3)、可选的,清零中断标志bADC_IF。可选的,如果使用中断模式,还需要在此使能中断。 (4)、设置ADC_CTRL寄存器中的bADC_START,启动一次ADC转换。 (5)、等待bADC_START变为0,或者bADC_IF被置1(如果之前已清零),表示ADC转换结束,可通

过ADC_DAT读取结果数据。该数据是输入电压相对于VDD电源电压的4095等份的值,例如,结果数据是475,说明输入电压接近VDD电压的475/4095。如果VDD电源电压也不确定,那么可以另测一个确定的参考电压值,再按比例计算出被测的输入电压值和VDD电源电压值。 (6)、如果再次设置bADC_START则可启动下一次ADC转换。

(7)、如果ADC参考时钟频率较高导致采样时间较短,或者信号源串联内阻值较大,或者电源电压较

低导致Rsw内阻较大,那么有可能Ca采样不到足够的信号电压,影响ADC结果。解决方法是丢弃第一次ADC数据,立即启动第二次ADC并用其ADC结果数据,相当于采样两次。 (7)、对精度要求较高时,建议使用前校准,用软件消除固有偏差。

上述被选择的外部模拟信号通道,其所在GPIO引脚必须设置为高阻输入模式、或者开漏输出模式并且处于输出1的状态(相当于高阻输入),Pn_DIR_PU[x]=0,并且关闭上拉电阻和下拉电阻。

50

16、USB控制器

16.1 简介

CH555集成了一个USB复合设备控制器,其中包括一个USB device-hub(USBHB)以同时支持3个HID功能子设备,分别是USBD0、USBD1、USBD2。

CH555的USB控制器的主要特性如下:

(1)、支持USB控制传输、批量传输、中断传输、同步/实时传输; (2)、支持最大64字节的数据包,内置FIFO,支持中断和DMA; (3)、支持USB 2.0全速12Mbps;

(4)、复合设备控制器包括一个内置集线器device-hub和三个各自独立的功能子设备; (5)、可选,关闭复合设备,仅启用USBD0设备。

16.2 功能

内置集线器USBHB提供了3个端点:端点0是默认端点,支持控制传输,发送和接收共用一个64字节数据缓冲区;端点1是发送端点IN,有一个独立的64字节数据缓冲区,支持批量传输、中断传输和实时/同步传输;端点4是可选的接收端点OUT,使用端点0的64字节数据缓冲区的后32字节,支持批量传输、中断传输和实时/同步传输。

0#功能子设备USBD0提供了7个端点:端点0是默认端点,支持控制传输,发送和接收共用一个64字节数据缓冲区;端点1、端点2、端点3可以各自独立配置为发送端点IN或接收端点OUT,各有一个独立的64字节数据缓冲区,支持批量传输、中断传输和实时/同步传输;端点4是可选的接收端点OUT,使用端点0的64字节数据缓冲区的后32字节,支持批量传输、中断传输和实时/同步传输;端点5、端点6是可选的各自独立的发送端点IN,分别使用端点1、端点2的64字节数据缓冲区的后32字节,支持批量传输、中断传输和实时/同步传输。

由于3个功能子设备的结构相同,所以下面仅以USBD0进行说明。

每个端点都具有一个控制寄存器D0_EPnRES和发送长度寄存器D0_EPnT_L,用于设定该端点的同步触发位、对OUT事务或IN事务的响应以及发送数据的长度等。

作为USB设备所必要的USB总线上拉电阻可以由软件随时设置是否启用,当USB_CTRL中的bUX_DP_PU_EN置1时,CH555在内部为DP引脚连接上拉电阻,并启用USB复合设备功能。

当USB连接计算机后,首先会进行device-hub枚举,接着根据该hub下行端口的连接状态对各个功能子设备依次进行枚举,最后计算机与各个功能子设备分时进行USB数据通讯。

当检测到USB总线复位、总线挂起或唤醒事件,或者当USB成功处理完数据发送或者数据接收后,USB协议处理器都将设置相应的中断标志并产生中断请求。应用程序可以直接查询或在USB中断服务程序中分析USB_IF、分析D0_STATUS或HB_STATUS,处理完数据传输中断事务后可以直接清除USB_IF中的相应中断标志。各个功能子设备只需要处理USB数据传输中断bUX_IF_D0_TRANS,USBHB需要处理USB数据传输中断bUX_IF_HB_TRANS和总线复位中断bUX_IF_BUS_RST、总线挂起或唤醒中断bUX_IF_SUSPEND、FIFO溢出中断bUX_IF_FIFO_OV等公共事务。

USB的所有数据缓冲区都是固定地址的,端点0的数据缓冲区起始地址的计算公式如下:

#define pDi_EP0_BUF(i) ((PUINT8X)(i*0x100+0x1000+UX_EP0_ADDR)) 其中i为子设备的序号0~3,此处3表示device-hub。

自端点0的64字节缓冲区(可选端点4占用后32字节)之后,依次每隔64字节是端点1(可选端点5占用后32字节)、端点2(可选端点6占用后32字节)、端点3的各自64字节缓冲区。

例如USBD1端点0的缓冲区起始地址是(1*0x100+0x1000+UX_EP0_ADDR)=0x1100;

USBD1端点5的缓冲区起始地址是0x1100+64+32=0x1160。

16.3 寄存器

表16.3.1 USB全局和USBHB相关寄存器列表

8位USB和RGB-LED MS51单片机CH555手册 - 图文

46配置步骤:(1)、设置SPI时钟分频设置寄存器SPI0_CK_SE,配置SPI时钟频率。(2)、设置SPI设置寄存器SPI0_SETUP的位bS0_MODE_SLV为0,配置为主机模式。(3)、设置SPI控制寄存器SPI0_CTRL的位bS0_MST_CLK,根据需求设置为模式0或者3。(4)、设置SPI控制
推荐度:
点击下载文档文档为doc格式
78iab9bjb48az813jgo32teb88j4b1005s0
领取福利

微信扫码领取福利

微信扫码分享