PDIUSBD12管脚简述

        

PDIUSBD12管脚及简述

PDIUSBD12读写时序图

CS_N是片选信号,当片选信号位低电平时,下面的操作才有效。由于板子上将CS_N接地,所以它一直保持低电平。

A0是地址线,用于选择是命令还是数据。A0=1,表示操作的是命令,A0=0,表示操作的是数据。

WR_N是写信号,表示WR_N的上升沿将数据写入到芯片中。数据必须在上升沿的前后稳定地保持一段时间(图中的tWDSU和tWDH)才能可靠写入。

RD_N是读信号,在读数据时,应该先将RD_N置低,等待一段时间(tRLDD)后,数据将出现在DATA[7:0]上,这时可以读数据。读取完毕后,将RD_N置高。

写命令:

将A0置高(即设置为命令状态) ——> 将WR_N置低 ——> 将命令放到数据总线上 ——> 将WR_N置高。

    void D12WriteCommand(uint8 command)
{
D12SetCommandAddr();
D12ClrWr();
D12SetPortOut();
D12SetData(command);
D12SetWr();
D12SetPortIn();
}

写字节:

将A0置低(即设置为数据状态) ——> 将WR_N置低 ——> 将数据保存到数据管脚对应寄存器上 ——> 将WR_N置高。

    void D12WriteByte(uint8 value)
{
D12SetDataAddr();
D12ClrWr();
D12SetPortOut();
D12SetData(value);
D12SetWr();
D12SetPortIn();
}

读字节:

将A0置低(即设置为数据状态) ——> 将RD_N置低 ——> 读取数据管脚对应寄存器上数据 ——> 将RD_N置高。

    uint8 D12ReadByte()
{
uint8 tmp; D12SetDataAddr();
D12ClrRd(); tmp = D12GetData(); D12SetRd(); return tmp;
}

参考资料:《圈圈教你玩USB》

最新文章

  1. 移动端开发概览【webview和touch事件】
  2. 线程间通信 GET POST
  3. WinZip Registry Optimizer 初体验
  4. Final-阶段站立会议5
  5. Javascript样例之文档章节滚动全版(DOM)
  6. 软件测试——boost单元测试 C++
  7. 各种好用的工具之一 ---- PNGGauntlet
  8. POJ1015 动态规划
  9. Python的对象和类型
  10. StringUtils.isNumeric(String str) 的一个坑(转)
  11. github多用户git push错误remote: Permission to user1/z.git denied to user2
  12. mysql 表结构及基本操作
  13. STM32CubeMX+Keil裸机代码风格(1)
  14. spring4笔记----常见的java的字符类型与xml匹配
  15. Codeforces 725E Too Much Money (看题解)
  16. python web中的并发请求
  17. adb无线网络调试
  18. Flask初级(十)flash与前台交互post详解
  19. UML(统一的建模语言)
  20. python 简单的单例模式日志模块

热门文章

  1. 吴裕雄--天生自然python学习笔记:Python3 正则表达式
  2. 科学家用AI看月球后,却发现了这些东西
  3. unittest(8)- 学习ddt
  4. pytorch的visdom启动不了、蓝屏
  5. 良知VS野心,苹果为何要翻新手机?
  6. Ionic3学习笔记(七)Storage
  7. 将配置好的虚拟机文件导入VMware
  8. Docker容器时间同步问题
  9. Redis过期key淘汰策略
  10. 换到GitHub 博客了