历史上的今天
今天是:2025年03月17日(星期一)
2020年03月17日 | STM32使用FSMC驱动8080时序CH395的一些问题
2020-03-17 来源:eefocus
CH395L是带并口的版本,支持串口、SPI、并口三种模式,网卡类似于内置TCP协议的W5500,用户只需读取一些参数设置socket就可以完成网络通信。CH395具有并口模式,这是个特色,在对速度要求高的场合,并口比SPI等串行方式快很多,在使用stm32f103以fsmc硬件并口驱动ch395时参考秉火和战舰的驱动LCD的例程,因为都是8080时序的设备,方法相似。
在配置过程中,发现在以杜邦线连接ch395模块的情况下,
readWriteTiming.FSMC_AddressSetupTime = 0x03;
readWriteTiming.FSMC_DataSetupTime = 0x08;
这两个值不能再小于此数值,整个读写周期达到 (3+1 +8+1)*1/72MHz = 182ns,没达到手册的写模式极限值41ns


值改小的话读出的数据会重复 出错,只能调大,原因可能是杜邦线的稳定性问题,波形奇丑:

与LCD配置不同的是,需要加上以下:FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait = FSMC_AsynchronousWait_Disable;
同步等待需要关闭,之前测试失败是因为读写周期不一致,示波器观察 写周期太短,周期与写不一致,FSMC_AccessMode_B下,写周期的参数似乎不受控制,周期过短,切换为FSMC_AccessMode_A ,读写分别配置,示波器查看 读写周期一致,驱动成功。没有再深入研究,具体配置如下:
readWriteTiming.FSMC_AddressSetupTime = 0x03;
readWriteTiming.FSMC_DataSetupTime = 0x08;
readWriteTiming.FSMC_AccessMode = FSMC_AccessMode_A;
readWriteTiming.FSMC_AddressHoldTime = 0x00;
readWriteTiming.FSMC_BusTurnAroundDuration = 0x00;
readWriteTiming.FSMC_CLKDivision = 0x00;
readWriteTiming.FSMC_DataLatency = 0x00;
FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAMx;
FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;
FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_NOR;
FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b;
FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait = FSMC_AsynchronousWait_Disable;
FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &readWriteTiming;
FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &readWriteTiming;
此外参考ch395官方demo--exam0,移植了stm32平台下串口、硬件SPI、模拟并口、硬件FSMC并口的驱动程序,4个Socket分别工作在TCP 客户端、服务器、UDP、IPRAW模式。
史海拾趣
|
LED照明成为厂商主攻市场,以照明应用来说,效率是最主要的关键问题。因瓦数及输出电流大而产生温度过高的问题都是需要改善的地方,同时也是产品提升的要点。 目前LED驱动面临的最大问题是热耗及其相关的可靠性问题。这 ...… 查看全部问答> |
|
现在的系统核心库一般一加载入内存就被各种软件修改得七七八八啦,什么杀软,病毒,连游戏的反外挂都来掺和,我想在我自己的进程空间内独立载入一份干净的系统核心库或者重新载入.可行吗? 另外问一下,在怎样卸掉内存中的dll(未知所属进程).… 查看全部问答> |
|
刚转来做WinCE驱动,所以现在很多问题还不是很清楚,请xdjm们帮忙解答 开发需求: WinCE上扫描仪等驱动开发 目前状态: XP SP2 + VS2005,已经可以进行WinCE上AP开发 求教: 一、WinCE的DDk是不是Platform Build ...… 查看全部问答> |
|
各位大侠:小弟现在正在开发一个项目,项目描述如下:在一个机箱内部有多块电路板,其中一块是主控制板,其余的都是从电路板(从电路板上也有MCU),现在要求主控制板可以和从电路板上的MCU通信,要求可以是点对点的通信,也可以是广播通信, ...… 查看全部问答> |
|
2812上电时运行的慢,但有时上电时运行的快,同样的配置,同一块电路板,运行指示灯闪动频率由cputimer0控制,快慢能明显分变出来。 在仿真器上运行时,有时也出现这个问题,程序烧写后,运行时有时也出现这个问题。 请各位大侠帮帮忙?… 查看全部问答> |
|
求助,dsp学了好久,却依然不得要领~~已经开始怀疑自己的智商了~~~ 一个很容易的问题,关于f28335 串口的程序,我在开发板上烧写,程序正常,然后用自己写的板子同样基本类似的程序,完全没有反应。串口引脚处没有波形。即便时钟和波特率设 ...… 查看全部问答> |
|
利尔达——《大学生嵌入式学习实践--基于MSP430系列》配套资料 利尔达编写的《大学生嵌入式学习实践--基于MSP430系列》配套资料 这是配套程序 -------------------------为获秒杀资格 电路在这个贴里:https://bbs.eeworld.com.cn/viewthread.php?tid=315413&extra=page%3D1&frombbs=1… 查看全部问答> |




