摘要: 1、高速及全速设备的上拉电阻在D+上面,低速设备的上拉电阻在D-上面;高速模式在连接上了之后,要将D+上的上拉电阻断开。2、用于USB OTG的MINI USB接口有5条线,多了一条ID线,用于标识身份(主机还是从机)。3、低速和全速模式中,采用的是电压传输模式,高速模式下,采用的是电流传输模式。4、理论上,一个USB主控器最多可接127个设备,因为协议规定每个设备具有一个7bit的地址,0地址保留给未初始化的设备使用。5、USB是一主多从结构,USB的数据传输都是主机发起的。6、USB1.1协议定义的的标准描述符有设备描述符(Device Descriptor)、配置描述符(Configur 阅读全文
posted @ 2012-09-16 20:15 果壳中的宇宙 阅读(358) 评论(0) 推荐(0) 编辑
摘要: 问题描述: 我有一个需求,AD采得一定数目的数据之后,由串口DMA发出,由于AD使用双缓冲,所以每次开始DMA的时候都需要重新设置开始的内存地址以及传输的数目(这些都是理所当然的),但是在开始调试的时候,遇到了一些问题,问题如下:当第一次DMA传输完毕,关闭DMA以设置内存地址等,再开启DMA,发现不启动了。 开始是参考了《STM32中文参考手册REV10》,里面的发送步骤如下:1. 在DMA控制寄存器上将USART_DR寄存器地址配置成DMA传输的目的地址。在每个TXE事件后,数据将被传送到这个地址。2. 在DMA控制寄存器上将存储器地址配置成DMA传输的源地址。在每个TXE事件后,将从此存 阅读全文
posted @ 2012-09-16 16:11 果壳中的宇宙 阅读(5201) 评论(0) 推荐(3) 编辑
摘要: 用了不少芯片,就只有51有位操作,这个特性很喜欢,赋值简单、效率又高且节省内存,不必为了一个bool去分配一个uint8.发现stm32有Bit-Banding,就试了一下,用MDK-ARM环境下的汇编代码做了一些比较。操作,清零USART1的SR寄存器的TC位:方法一://利用USART_TypeDef这个结构寻到SR的地址,再赋值USART1->SR &= ~(1<<6);其汇编代码(-level 0)如下:用了7条指令。方法二:直接用SR的地址操作:*(__IO uint32_t *) 0x40013800 &= ~(1<<6);汇编如下:可 阅读全文
posted @ 2012-09-16 09:06 果壳中的宇宙 阅读(2523) 评论(0) 推荐(0) 编辑