搜索
bottom↓
回复: 7

M051问题笔记,知道的答疑解惑,有问题的继续跟帖:)

[复制链接]

出0入0汤圆

发表于 2010-12-17 17:25:17 | 显示全部楼层 |阅读模式
现在发现以下几个问题:
当EBI使能时,设置成16BIT模式时P2口是可以输出地址的,但设为8BIT模式时P2口未动作。但按手册上讲的应该和单片机一样开了8bit时只是数据是8bit的,地址应该也是16bit的啊,不知为何P2口无地址输出。
当EBI使能后,再开PWM1时,P2.1和P4.1都会输出PWM波形,按其说法应该是开了EBI以后PWM会映射到P4口的,不解。而且int32_t DrvGPIO_InitFunction(E_DRVGPIO_FUNC function)中设置PWM时的代码如下:  依照代码来看没发现有判断EBI是否开启的地方,如果是PWM1的话确实是配置完了P2口又配置了P4口。    请知道的大侠解惑一下,谢谢。
                /*---------------------------------------------------------------------------------------------------------*/
                /* PWM                                                                                                     */
                /*---------------------------------------------------------------------------------------------------------*/
                case E_FUNC_PWM01:
                case E_FUNC_PWM23:
                    case E_FUNC_PWM45:
                case E_FUNC_PWM67:
                {
            outpw(&SYS->P2_MFP, (inpw(&SYS->P2_MFP) | (0x3<<((function-E_FUNC_PWM01)*2)+8)) & ~(0x3<<((function-E_FUNC_PWM01)*2)));

            if (function == E_FUNC_PWM01)
                outpw(&SYS->P4_MFP, (inpw(&SYS->P4_MFP) & ~(0x3<<8)) | (0x3<<0));
            else if (function == E_FUNC_PWM23)
                outpw(&SYS->P4_MFP, (inpw(&SYS->P4_MFP) & ~(0x3<<10)) | (0x3<<2));
                }break;

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2010-12-18 08:27:56 | 显示全部楼层
听新唐的说好像有复用的功能,好像地址和数据复用,不清楚没用过这些。

出0入0汤圆

 楼主| 发表于 2010-12-19 21:34:21 | 显示全部楼层
严重怀疑驱动库有问题,个人认为应该有如下判断:
                /*---------------------------------------------------------------------------------------------------------*/
                /* PWM                                                                                                     */
                /*---------------------------------------------------------------------------------------------------------*/
                case E_FUNC_PWM01:
                {
                    /* EBI function enable */
                if(EBI->CON.ExtEN ==ENABLE)
                        {
                                outpw(&SYS->P4_MFP, (inpw(&SYS->P4_MFP) & ~(0x3<<8)) | (0x3<<0));  //P4.0 P4.1
                        }else{
                            outpw(&SYS->P2_MFP, (inpw(&SYS->P2_MFP) | (0x3<<((E_FUNC_PWM01-E_FUNC_PWM01)*2)+8)) & ~(0x3<<((E_FUNC_PWM01-E_FUNC_PWM01)*2)));
                        }

                }break;



另外,当EBI总线设置开启时,按照库中代码:
                case E_FUNC_EBI_16B:
        {
            outpw(&SYS->P2_MFP, (inpw(&SYS->P2_MFP) & ~(0xFF<<8)) | (0xFF<<0));        //P2 AD8-15               
        }
                case E_FUNC_EBI_8B:
        {
            outpw(&SYS->P0_MFP, (inpw(&SYS->P0_MFP) & ~(0xFF<<8)) | (0xFF<<0));        //P0 AD0-7                       
                       
            outpw(&SYS->P3_MFP, (inpw(&SYS->P3_MFP) | (0x1<<11)) & ~(0x1<<3));        //P3.3 MCLK               
            outpw(&SYS->P3_MFP, (inpw(&SYS->P3_MFP) & ~(0x3<<14)) | (0x3<<6));        //P3.6 P3.7  WR RD               
            outpw(&SYS->P4_MFP, (inpw(&SYS->P4_MFP) & ~(0x3<<12)) | (0x3<<4));        //P4 上的CS 和 ALE               
        }
                break;
单步调试时会发现,如果设置为16bit,则会运行完case E_FUNC_EBI_16B后,由于没有break还会继续运行case E_FUNC_EBI_8B里的配置,这样就把EBI总线全部设置好了,但如果设置为8bit时,第一个case是不执行的,也就是说P2口是不配置的,只配置case E_FUNC_EBI_8B里的P0口和CS RD WR等其他几个管脚,但按照时序即时设置为8bit时,发送地址时也是16bit地址啊,那不配置P2口如何送高端的地址呢?这也就是我开始提的问题:当EBI使能时,设置成16BIT模式时P2口是可以输出地址的,但设为8BIT模式时P2口未动作。

想请教一下用过的大侠:
1。如何正确使用EBI的8bit和16bit模式?
2.如果EBI总线上接了多个器件,且想用P2当作不同的地址选择线,改如何操作多个EBI上的器件呢?如何定义各自的地址?
  outpb((uint8_t *)DRVEBI_BASE_ADDR+DAC1Addr,data );        //DAC1Addr=0xFEFF   P2.0=CS    这样可以指定P2.0当作CS的器件吗?

出0入0汤圆

发表于 2011-2-3 15:45:47 | 显示全部楼层
不清楚

出0入0汤圆

发表于 2011-2-16 10:38:06 | 显示全部楼层
测试了m051的一些外设,觉得驱动库有瑕疵,例程有些错误。

出0入0汤圆

发表于 2011-2-16 10:44:23 | 显示全部楼层
就弄到AD

后面还没看了

这总线干什么的都不知道



想法移植uCOS到新唐上~~~~

出0入0汤圆

发表于 2011-2-16 16:11:54 | 显示全部楼层
不建议直接使用M051的库, 感觉问题很多, 我在移植FATFS的时候就吃亏了,都是些很明显的问题。
自己想实现的功能还是自己写函数比较好。

出0入0汤圆

发表于 2013-6-6 22:51:30 | 显示全部楼层
o0pingu0o 发表于 2010-12-18 08:27
听新唐的说好像有复用的功能,好像地址和数据复用,不清楚没用过这些。

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

本版积分规则

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

GMT+8, 2024-5-12 11:45

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

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