This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DM648板子画完了,软件开发请求合作

Other Parts Discussed in Thread: TMS320DM647

我的DM648视频处理电路板做好了,找人合作开发一些基础单元:



请求开发的内容:
1、视频捕获,得到视频画面数据
2、视频显示,通过adv7390输出
3、通过I2c读写24c256
4、通过I2c写单片机
     视频捕获、显示芯片都是通过I2C初始化的,实际上是:视频捕获、显示、I2C基础程序。
在这里请大家给我一些建议:我得花多少币子才能找到合作者人?咱们论坛里有没有能搞的?


 

  • 开发一款新的DSP怎么这么难尼?

     

     

     

     

     

     

  • 1.DM648 不是TI主流推荐的CPU, 所以他的开发用户比较少,在10-13年 用DM648+DM368 做智能交通的方案的比较多,现在很少了。

    2.我以前开发是用CCS3.3 和重大的560V1 仿真器 比较方便。

    3.他是64X+的内核 不需要SYS/BIOS DSP/BIOS5.4 或者5.3这样的版本就OK了。

    4.xdc 对于单核的DM648 是没有必要安装的,我就没有用过他。

    你就用CCS3.3 开发难度其实 和以前的DM642 差不多的。

  • 感谢pengpeng gong 指导!

         我打算绝地反击,不用系统、库类了,芯片寄存器级研究,像早期的单片机编程那样搞了,鉴于外国公司的保守与垄断,我共享我的研究,和中国广大电子、软件爱好者共同提高,希望同仁也能帮助我,解答我的困惑。今天开始研究第一个芯片-CDCE913,网上关于CDCE9xx系列的中文资料几乎查不到,为此将学习笔记上传于此


     

    CDCE913笔记1.doc
  • 您太给力啦    支持您

    将会一直关注

  • 好吧 我支持你一下, 不跑操作系统 也可以,跑单片机用中断向量表来弄也可以, 只是这样你的开发的工作量 是不是太大了啊,? 会不会影响你的工作进程啊, 毕竟现在一般公司开发主要精力放在自己擅长的地方,

    其实TI的648的 DVSDK还是挺好理解的, 虽然是DSP的下的, 但是还是和TI368的 DVSDK4.0的组织架构很相似的, 里面的驱动 很多都是参考linux的思想来的, 比如SEM 系统自己 弄了个40个 做个数组, 类似池子,让你申请, 替你做了保护机制。。。。还有很多。 你决定要 裸跑C的?

  • 回pengpeng gong

          感谢支持。现在板子还没做回来呢,我的板子很简单,把视频输入输出搞好了就大功告成了,我单片机搞多了,如果再把EDMA弄好了,基础硬件知识就丰富了,多学点底层的东西益处多多。同时。。。。。。

     

     

     

     

    CDCE913笔记2.doc
  • 搞TI的东西,感同身受。。。

    顶你~~!

  • 妈了个巴子,专研了几个月DM648,好像入门了,我烦TI的BIOS、EVM参考、各种工具,搞得太复杂,我就用寄存器级直接编程。
     
    试着搞了一个DM648读写24wc256的程序,板子未回,未经调试,共享一下:请大家看看程序是否有毛病?
     
    DM648 I2C读写24c256程序:

    void init_i2crw24c256(void)
    {
    //严格按照手册中的前7步做
    //1. Enable the clock to the I2C peripheral by programming the Local Power and Sleep Controller(LPSC) tied with I2C peripheral.
    device_init();
    //2. Place I2C in reset (clear IRS = 0 in ICMDR).
    ICMDR = 0x0000; //复位//  0b00000000 00100000 ;

    /*3. Configure ICMDR:
    · Configure I2C as Master (MST = 1).
    · Indicate the I2C configuration to be used; for example, Data Receiver (TRX = 0)
    · Indicate 7-bit addressing is to be used (XA = 0).
    · Disable repeat mode (RM = 0).
    · Disable loopback mode (DLB = 0).
    · Disable free data format (FDF = 0).
    · Optional: Disable start byte mode if addressing a fully fledged I2C device (STB = 0).
    · Set number of bits to transfer to be 8 bits (BC = 0).*/
    //i2c mode register
    ICMDR =  0x0400; //0b00000100  00000000 //主模式
    //4. Configure Slave Address: the I2C device this I2C master would be addressing (ICSAR = 7BIT ADDRESS).
    ICSAR = (I2c_devaddr>>1); //它是7位地址,8位中的高7位是地址,所以右移1位
    //5. Configure the peripheral clock operation frequency (ICPSC). This value should be selected in such a way that the frequency is between 6.7 to 13.3 MHZ.
    ICPSC = 0x02; //可先搞慢点,看示波器研究
    //clkin/3这个预分频还要满足输出6.7 to 13.3 MHZ,说明clkin 在20.1 to 39.9MHz,它是sysclk3,sysclk3是系统参考时钟6分频来的,那么系统参考时钟最高才240MHz,不可能对。

    //6. Configure I2C master clock frequency:
    // Configure the low-time divider value (ICCLKL).
    // Configure the high-time divider value (ICCLKH).
    ICCLKL = 0x10;
    //set i2c clock high time divide down value, 0-FFFFh
    ICCLKH = 0x10;       //  pclk/((0x10+5)+(0x10+5))

    }



    int Write_24c256(int addr,uchar * cp,int num) //在addr处,开始写num个字节,主程序确保不能跨页写
    {
    int i;
    //7. Make sure the interrupt status register (ICSTR) is cleared:
    //· Read ICSTR and write it back (write 1 to clear) ICSTR = ICSTR
    //· Read ICIVR until it is zero.
    while (ICIVR) {
    ICSTR = ICSTR;
    };

    //8. Take I2C controller out of reset: enable I2C controller (set IRS bit = 1 in ICMDR).
    //bring i2c module out of reset
    //ICMDR |= 0x0020; //  0b00000000 00100000 ; //复位结束,开始工作了,上电这位是0

    //9. Wait until bus busy bit is cleared (BB = 0 in ICSTR).
    while (ICSTR & 0x1000); //00010000 00000000 //BB

    ICCNT = num+2;                 // 设置一共发送数据的数目
    ICMDR = 0x6E20;                // 01101110 00100000   断点继续工作、起始、停止、主、发、复位结束
    Delayus(1);
    while (!(ICSTR & 0x0010 )); // 00000000 00010000 ICXRDY 发送数据准备好中断标志位
    //write to transmit register
    ICDXR = ((addr>>8)& 0x00ff); // ROM数据地址H
    Delayus(1);
    while (!(ICSTR & 0x0010 )); // 00000000 00010000 ICXRDY 发送数据准备好中断标志位
    ICDXR = ((addr)& 0x00ff); // ROM数据地址L

    for (i=0;i<num;i++){
    Delayus(1);
    while (!(ICSTR & 0x0010 )); // 00000000 00010000 ICXRDY 发送数据准备好中断标志位
    ICDXR = *cp++; //
    }
    Delayus(10);
    ICMDR = 0;                // 复位
    return i;
    }
    int Read_24c256(int addr,uchar * cp,int num) //在addr处,开始读num个字节
    {
    int i;
    //7. Make sure the interrupt status register (ICSTR) is cleared:
    //· Read ICSTR and write it back (write 1 to clear) ICSTR = ICSTR
    //· Read ICIVR until it is zero.
    while (ICIVR) {
    ICSTR = ICSTR;
    };

    //8. Take I2C controller out of reset: enable I2C controller (set IRS bit = 1 in ICMDR).
    //bring i2c module out of reset
    //ICMDR |= 0x0020; //  0b00000000 00100000 ; //复位结束,开始工作了,上电这位是0

    //9. Wait until bus busy bit is cleared (BB = 0 in ICSTR).
    while (ICSTR & 0x1000); //00010000 00000000 //BB

    ICCNT = 2;                 // 设置一共发送数据的数目
    ICMDR = 0x6620;                // 01100110 00100000   断点继续工作、起始、主、发、复位结束
    Delayus(1);
    while (!(ICSTR & 0x0010 )); // 00000000 00010000 ICXRDY 发送数据准备好中断标志位
    //write to transmit register
    ICDXR = ((addr>>8)& 0x00ff); // ROM数据地址H
    Delayus(1);
    while (!(ICSTR & 0x0010 )); // 00000000 00010000 ICXRDY 发送数据准备好中断标志位
    ICDXR = ((addr)& 0x00ff); // ROM数据地址L


    //清中断标志
    while (ICIVR) {
    ICSTR = ICSTR;
    };

    ICMDR = 0x6420;                // 01100100 00100000   断点继续工作、起始、主、收、复位结束
    //不知道能否产生接收起始、发送设备地址?
    Delayus(1);
    for (i=0;i<num;i++){
    if (i>=(num-1)) {
    ICMDR |= 0x8000; //设置不应答
    }
    while (!(ICSTR & 0x0008 )); // 00000000 00001000 ICRRDY 接受数据准备好中断标志位
    *cp++ = ICDRR; //接受数据
    Delayus(1);
    }
    ICMDR |= 0x0800; //停止位
    Delayus(2);
    ICMDR = 0;                // 复位
    return i;
    }

    下一步研究I2C配置编解码芯片,妈了个巴子,就是向前!奋勇杀敌!
     
    DM648、647 I2C学习笔记.doc
  • 《ADV7182学习笔记-1》

    待续   努力向前

    ADV7182笔记-1.doc
  • 刚看到你的帖子,不知道你是什么身份,工作开发还是学习研究,真的是精神可嘉!!!去年这时候我实验室有一个师兄就是专门搞648的,毕业论文应该说做的很不错,硬件到软件都做了,就是视频方面的,当时自己对这个东西还比较模糊,也没有过多的交流,他现在工作了,可能不太方便提供帮助,我现在在学习642,看到你的精神挺受鼓舞的,我觉得不管做什么,方法蛮重要的,其次是下功夫钻研,共同努力吧!!

  • 楼主貌似在搞核心科技

    核心科技不需要复杂的应用,故而系统简单

    真实的商用产品需要复杂的应用,故而需要复杂的系统

    道理就这么简单,楼主动了不?

  • 这个视频解码芯片,简简单单I2C编入几个配置字节就应该OK了.

    ADV7182笔记.doc
  • 《TMS320DM647DM648 DSP Enhanced DMA (EDMA3) Controller User's Guide》学习笔记

     

    英雄莫问出处,国人共同进步!

     

    TMS320DM647DM648 DSP Enhanced DMA (EDMA3) Controller User's Guide概览笔记.doc
  • 《TMS320DM647 DM648 DSP Video Port VCXO Interpolated Control (VIC) Port User s Guide》笔记-1

     

     http://www.pudn.com/downloads610/sourcecode/embedded/detail2486224.html

     

  • 648中文资料匮乏,所以感觉有难度!不过看懂了资料也就不那么棘手了。搞懂底层驱动是有难度,也会增加项目周期。我曾经也参与DM648的开发,当时在网络那一块卡滞了,TI提供的NDK 内容太多,而且都是基于评估板的例程,很不好搞,况且我们的基本上都是用汇编实现的。所以网络还是没搞通。不过其他的底层驱动都还可以。多多交流。

  • 致DM648想入门、刚入门初学者:
            我算是刚要入门者,历经几个月的摸爬滚打,东一头西一撞,才见到DM648开发轮廓,摸索过DSP\BIOS、CSL、PSP、XDCtool,收罗了各种支离破碎的例程、经验,以不高的英语水平浏览了很多pdf,太多了眼花缭乱,如今才摸出点头绪,理清了开发思路,昨天看到了这个网页(附后),个人觉得相见恨晚,如果早一点看到它,会少走无数弯路,为此我要告诉我的DM648国人同仁,先看一看Ti的这个网页吧:
    http://processors.wiki.ti.com/index.php/DM648/7_designer's_resource_guide

                                    同仁加油

     

  • 傻了

    板子作回来了,调试1.2v,1.8v输出,空载正常,带载1.2v=0v,1.8V=0.4v了,1.2v对地电阻40欧,1.8V对地电阻42欧,1.2对1.8电阻80多欧,单独用2欧的功率电阻做负载均正常,奇怪了,有遇到类似问题的朋友吗?

    (几块板子都类似)