搜索
bottom↓
回复: 8
打印 上一主题 下一主题

FT232H 异步FIFO传送数据给PC间隔是4?

[复制链接]

出340入0汤圆

跳转到指定楼层
1
发表于 2024-4-9 20:28:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ajfan 于 2024-4-9 20:35 编辑

请教各位大神,C8051F340连FT232H工作在异步FIFO口模式,F340---》FT232H---》PC,上位机用labview,目前数据可以通过F340往PC上传,但是PC端读取的数据都是间隔4的数据,硬件使用的是淘宝买的FT232H的开发板,硬件故障的概率比较小,有可能还是逻辑,时序或上位机的问题,有大神可以指点一下迷津么?

(我的理解是FT232H的FIFO如果没有满,对应TXE为低,送数据给FIFO data口,MCU控制WR口由高变低传送一个Byte的数据,循环WR由高变低传送对应的Bytes,直到FIFO满TXE为高停止)
(上位机先找到对应的USB端口,然后设定SetLatencyTimer和SetUSBParameters,然后purge清除FIFO口数据,然后循环查询FT_GetStatus如果接收FIFO 不为空则对应将数据用FT_Read读取出来,这里FIFO 字节数好像也不对,不应该是65536,FIFO好像也就256或512不可能读到65536,难道是下载的FT232H labview API有问题???)

另外TXE的t7感觉时间有点短,最小49ns,但TXE是FT232H给出来的,控制不了,总感觉实测TXE和WR波形怪怪的。

F340工作在48MHZ
F340的P3口连接到FT232H的FIFO data口。

//---------------------------------------------------------------------------------
#include <C8051F340.H>
#include <string.h>
#include <intrins.h>
#include<stdlib.h>

sbit FT232_RXF=P0^0;
sbit FT232_TXE=P0^1;
sbit FT232_RD=P0^3;
sbit FT232_WR=P0^4;

void Port_IO_Init()
{
    P0MDOUT   = 0x18;
    P3MDOUT   = 0xFF;                //P3数据给FT232H
    XBR1      = 0x40;
}

void Oscillator_Init()
{
    int i = 0;
    CLKMUL    = 0x80;
    for (i = 0; i < 20; i++);    // Wait 5us for initialization
    CLKMUL    |= 0xC0;
    while ((CLKMUL & 0x20) == 0);
    CLKSEL    = 0x03;
}

void delay_1us(void)
{  
    _nop_();
    _nop_();
    _nop_();
    _nop_();
}

void delay_1ms(void)                 
{
           unsigned int i;
    for(i=2184;i>0;i--);  
}

void delay_ms(unsigned int i)                 
{
for(i;i>0;i--)
  {
   delay_1ms();
  }
}



//------------------------------------------------------------------------------------------
//=================================================================================
//                                   主函数定义
//=================================================================================
void main()
{
    PCA0MD &= ~0x40;             //禁止看门狗
    Port_IO_Init();
    Oscillator_Init();

    FT232_RD=1;
    FT232_WR=1;

    while(1)
     {        
           unsigned int h=0;

           for (h = 0; h < 256; h++)
             {
                if(FT232_TXE==0)
                   {
                       P3=h;
                       P3=h;                   //delay t8>5ns
                       FT232_WR=0;  
                       FT232_WR=0;     //delay t10>30ns
                       FT232_WR=0;     //delay t10>30ns
                       FT232_WR=1;
                   }
            }
     }
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出20入62汤圆

2
发表于 2024-4-10 08:36:22 | 只看该作者
还没有二楼是吧。我试试看。
你右键“我的电脑”,选“管理”,打开的界面在“设备管理器”里找到你的usb转串口对应的端口号。右键选中后,选择“属性”,在属性里点“端口设置”页面,点击“高级”,看到了么,把延时计时器选1,至于接收和发送字节数,自己够用就行,改小点。

出340入0汤圆

3
 楼主| 发表于 2024-4-10 08:52:06 | 只看该作者
谢谢二楼,目前FT232H配置的是USB转异步并行口模式,改串口设置也有用么?还是说模块我配置为并行口实际工作在串口?目前Bit Mode 读到是A2,我来查一下。
FT232H难道串口和并行口,用的FIFO是同一个?

出340入0汤圆

4
 楼主| 发表于 2024-4-10 20:48:13 | 只看该作者
群里有好几位大牛好像研究过FT232H或FT2232的,我来顶一下。
周边没有人搞这些电路什么的,最苦恼的就是遇到问题一个商量的人都没有。

出340入0汤圆

5
 楼主| 发表于 2024-4-10 21:16:31 | 只看该作者
我能说什么,换了个VI API竟然好了,谁能知道是下载的API有问题啊?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入9汤圆

6
发表于 2024-4-10 21:25:22 | 只看该作者
ajfan 发表于 2024-4-10 21:16
我能说什么,换了个VI API竟然好了,谁能知道是下载的API有问题啊?
(引用自5楼)

会不会是32位和64位系统的兼容问题,这货的不同系统是用不同的驱动。

出235入235汤圆

7
发表于 2024-4-10 22:26:09 | 只看该作者
labview  始终有点看不习惯。。

出340入0汤圆

8
 楼主| 发表于 2024-4-10 23:34:40 来自手机 | 只看该作者
labview效率不一定是最高,但调试是真方便,任意地方可以放探针,库也比较多

出0入0汤圆

9
发表于 6 天前 | 只看该作者
ajfan 发表于 2024-4-10 21:16
我能说什么,换了个VI API竟然好了,谁能知道是下载的API有问题啊?
(引用自5楼)

这个VI哪里可下载
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-2 23:39

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表