FT1248开发笔记

环境配置

开始调试前必须确保电脑已安装上正确的驱动程序,64位系统在driver中安装amd64的,32位的系统安装x86的(我在调试时因为驱动程序没有选对,真是血的教训。。。)。对于FTD2XX的芯片,除非使用MPSSE功能,其他情况都使用FTD2XX的驱动,然后使用dll或者配置成com来进行通信。

建议在调试硬件前用FTDI官方提供的测试程序进行测试。这是C#下的测试程序,http://www.ftdichip.com/Support/SoftwareExamples/CodeExamples/CSharp.htm,建议使用example 3的数据轮回测试,注意这个测试程序需要把TXD和RXD引脚短接,RTS和CTS引脚短接。因此建议画板的时候可以留下接口方便测试。如果四个脚都连接FPGA,那也可以用FPGA来扮演连接器的角色。

然后,别忘了还要使用FT_Prog把芯片和Master通信方式配置成FT1248模式。,这个在hardware specific中PART A的hardware中可以选择。,并在driver中选择FTD2XX。需要注意的是,如果只使用了一个FT232H和Master通信,FT1248总线上没有其他设备,那么一般会选上FT1248 setting的Flow ctrl not selected,这样在非通信过程是芯片的MIOSIO[0]和MISO才会反应数据缓冲区状态,在调试过程中如果出现数据发送出去但是板子没有收到的情况,那么有一种情况就是电脑的另一个usb也连着一个ft的usb芯片,有可能是程序烧录器。那就拔掉以后再试试。

FT1248的8bit协议

(一) FT232H在本协议中作为从机与主机进行8bit通信(或者1bit,2bit,4bit,本文基于8bit

1. 在8bits通信中,会用到11根信号线,双向数据线[7:0] MIOSIO,Master控制的时钟线(SCLK)和使能线(SS_N),FT232H控制的MISO

2. FT232H判断使用的是多少bit通信是通过检测SS_N在拉低后的第一个周期内MIOSIO情况(需要注意手册建议每个MIOSIO都要加上拉电阻,因此芯片默认都是在高电平的),

    如果[7:4]MIOSIO中有一个被拉低了,那么通信为8bit;

    如果[3:2]MIOSIO中有一个被拉低了,那么通信为4bit;

    如果[1]MIOSIO被拉低了,那么通信为2bit,否则就是1bit通信;

3. 在未进行通信时,FT232H将会通过MIOSIO[0]和MISO分别反应write buffer和read buffer的状态,两个buffer都有1 kBytes的空间:

    (a)其中MIOSIO[0]在高电平表示在write buffer中至少还能存放1 byte;

    (b)MISO在高电平表示read buffer还有至少1 byte没有被读取;

4. 当SS_N变为低电平表示主机正开始一次传输,这时首先由主机发送8bit的CMD指令(在第一个时钟返回延,从机进行采样),没有使用到的MIOSIO都拉低。

  对于8bit模式,              目前可用的指令包括:

    CMD0 = MIOSIO[6];            0x0  写输入到USB缓冲

    CMD1 = MIOSIO[5];            0x1  从USB缓冲读数据

    CMD2 = MIOSIO[3];            0x2  读取modem状态

    CMD3 = MIOSIO[0];            0x3  写modem状态

                           0x4  把write buffer中的数据擦除

5. 在第二个周期开始时,[7:0]MIOSIO的传输要转向,主机的这几根线进入三态状态(注意:AN_167手册上对8bit的这段描述貌似直接复制了4bit的,所以时钟和位宽都有错误)。转向完后,第三个周期就开始收/发数据了,当然这个时候SS_N都要保持低电平。同时,MISO会使用ACK或NAK来告知是否传输成功。

6. 在准备把SS_N拉高来结束传输前,必须把MIOSIO置于三态,使得FT232H能通过MIOSIO[0]把write buffer状态映射出来。

7. MISO的状态将表示是否在write的时候write buffer满了,或者在read的时候read buffer空了。如果出现这些异常,MISO将反馈NAK,手册建议当收到NAK的下一个周期必须SS_N置高停止传输,否则之后的read和write都会出问题。

8. 读写数据在每个返回延进行采样。

时间: 2024-11-07 04:43:22

FT1248开发笔记的相关文章

张高兴的 Windows 10 IoT 开发笔记:RTC 时钟模块 DS3231

原文:张高兴的 Windows 10 IoT 开发笔记:RTC 时钟模块 DS3231 GitHub:https://github.com/ZhangGaoxing/windows-iot-demo/tree/master/DS3231 注意:不包含闹钟设置

Android开发笔记(一百零三)地图与定位SDK

集成地图SDK 国内常用的地图SDK就是百度和高德了,二者的用法大同小异,可按照官网上的开发指南一步步来.下面是我在集成地图SDK时遇到的问题说明: 1.点击基本地图功能选项,不能打开地图,弹出"key验证出错!请在AndroidManifest.xml文件中检查key设置的"的红色字提示.查看日志提示"galaxy lib host missing meta-data,make sure you know the right way to integrate galaxy&

微信订阅号开发笔记(二)

微信开发的流程其实很简单 o(∩_∩)o 哈哈!在微信网站的编辑操作 额,就不说了.虽然有人问过.下面是我的微信开发过程,简单记录下. 成为开发者 材料:1.自己的服务器资源,百度的BAE,新浪的SAE都不错. 2.懂那么点编程语言. 3.注册微信公众号. 上面的都有了之后,就可以自己动手开发了.哇咔咔,好兴奋.有木有. 在登录进去之后,怎么成为开发者?不知道,自己看去. 开始coding吧. 1.验证 if (! empty ( $_GET ['echostr'] ) && ! empt

微信订阅号开发笔记(三)

1.接收语音识别结果 if($msgType=="voice"){ //收到语音消息 //MediaId 语音消息媒体id,可以调用多媒体文件下载接口拉取数据. //Format 语音格式,如amr,speex等 $format = $postObj->Format; $mediaId = $postObj->MediaId; //开通语音识别功能,用户每次发送语音给公众号时,微信会在推送的语音消息XML数据包中,增加一个Recongnition字段. //注:由于客户端缓

微信订阅号开发笔记(四)

1.创建菜单 //创建菜单 public function createMenu(){ $url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token="; $url.=$this->getacctoken(); //目前自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单.一级菜单最多4个汉字, //二级菜单最多7个汉字,多出来的部分将会以"..."代替.请注意,创建自定义菜单

Swift开发笔记

Swift开发笔记(一) 刚开始接触XCode时,整个操作逻辑与Android Studio.Visual Studio等是完全不同的,因此本文围绕IOS中控件的设置.事件的注册来简单的了解IOS开发 1.新建一个Xcode项目,项目目录大致如图: 2.在Main.storyboard添加控件 首先要显示右侧的工具栏(Utilities),之后选择显示Object Library,就可以找到常用的一些控件了,然后添加几个控件到界面中 3.将控件和ViewController进行关联 此时要将Ed

张高兴的 Xamarin.Forms 开发笔记:为 Android 与 iOS 引入 UWP 风格的汉堡菜单 ( MasterDetailPage )

所谓 UWP 样式的汉堡菜单,我曾在"张高兴的 UWP 开发笔记:汉堡菜单进阶"里说过,也就是使用 Segoe MDL2 Assets 字体作为左侧 Icon,并且左侧使用填充颜色的矩形用来表示 ListView 的选中.如下图 但怎样通过 Xamarin.Forms ,将这一样式的汉堡菜单带入到 Android 与 iOS 中呢? 一.大纲-细节模式简介 讲代码前首先来说说这种导航模式,官方称"大纲-细节模式"(MasterDetail).左侧的汉堡菜单称为&qu

web前端开发笔记(2)

web前端开发笔记(1) 一.HTML标签书写有哪些规范? 页面编码. 文档声明. 关键字与描述. 行内元素不能包含块级元素. a标签不能嵌套a标签. 标签名和属性必须用小写字母书写,属性必须加引号,标签必须闭合,单标签页必须闭合. 页面中不要用 进行缩进,如需缩进,用css控制. html标签使用必须语义化. 要为img标签填写alt和title属性. 二.HTML静态页面出现中文乱码如何解决? 引入<meta charset="UTF-8"> 三.通常情况下块属性标签和

[APP] Android 开发笔记 003

接上节 [APP] Android 开发笔记 002 5. 使用ant release 打包 1)制作 密钥文件 release.keystore (*.keystore) keytool -genkey -v -keystore "release.keystore" -alias "release" -keyalg "RSA" -validity "10000" 这里需要注意的是: -keystore "relea