主题:EM9287串口通信的问题 共有46957人关注过本帖 |
---|
deanzilin |
1楼 信息 | 搜索 | 邮箱 |
加好友 发短信 |
EM9287串口通信的问题 Post By:2014-7-11 15:47:00 [只看该作者]
在设计底板的时候才用了ZLG的RSM3485收发集成块,它有一个控制引脚,低发高收,我用EM9287的GPIO进行控制,发现接收以及发送数据时
非常容易出错,不知道哪位经历过类似的情况,应该如何解决呢?
|
单帖管理 | 引用 | 回复 |
zxw |
2楼 |
Post By:2014-7-11 16:43:00 [只看该作者]
使用GPIO来控制通讯的RTS,可能会有些慢,因此会出现掉数据的情况
你可以使用我们的驱动,打开RTS功能并配置好对应的GPIO引脚,就可以正常使用了: 可作为RTS硬件方向控制的GPIO有:GPIO6、 GPIO7、GPIO20
– GPIO31。在应用软件方面,需要主要代码如下: 设置一位GPIO作为RTS DWORD dwRtsGpioPin = GPIO26; //选择GPIO26作为RTS
If(!DeviceIoControl(hSer, { // 出错处理。。。 }
设置串口RTS控制模式 DCB SerDCB; SerDCB.DCBlength
= sizeof(DCB); GetCommState(hSer, &SerDCB ); // 从驱动读取当前DCB SerDCB.fRtsControl
= RTS_CONTROL_TOGGLE; SetCommState(hSer, &SerDCB ); // 再设置回驱动 需要注意:我们的RTS=0 数据发送 RTS=1 数据接收 |
|
单帖管理 | 引用 | 回复 |
deanzilin |
3楼 信息 | 搜索 | 邮箱 |
加好友 发短信 |
Post By:2014-7-11 18:41:00 [只看该作者]
谢谢答复。
DeviceIoControl(hSer, IOCTL_SET_UART_RTS_PIN, & dwRtsGpioPin, sizeof(DWORD), NULL, 0, NULL, NULL) 这一函数编译时会产生错误,分别为: error C2065:'FILE_DEVICE_BUS_EXTENDER' undeclared identifier error C2065:'METHOD_BUFFRED' undeclared identifier error C2065:'FILE_ANY_ACCESS' undeclared identifier error C2065:'CTL_CODE' undeclared identifier 请问这个应该怎样解决? 这一函数
[此贴子已经被作者于2014-7-11 18:41:08编辑过]
|
单帖管理 | 引用 | 回复 |
zxw |
4楼 |
Post By:2014-7-11 20:41:00 [只看该作者]
把GPIO的相关头文件加入工程试试!
出这种连接错,基本上是没有加入所需要的头文件或库!!
|
|
单帖管理 | 引用 | 回复 |
x10 |
5楼 |
Post By:2014-7-11 21:08:00 [只看该作者]
试试包含以下header: #include <winioctl.h> #include "bsp_drivers.h" |
|
单帖管理 | 引用 | 回复 |
deanzilin |
6楼 信息 | 搜索 | 邮箱 |
加好友 发短信 |
Post By:2014-7-12 15:22:00 [只看该作者]
以下是引用x10在2014-7-11 21:08:00的发言:
试试包含以下header: #include <winioctl.h> #include "bsp_drivers.h" 谢谢,问题已经解决了。 还有个事情很奇怪,就是我设置好的开机自启动程序,在你们的评估底板上就可以自启动,可换成我自己设计的底板就不能启动了。 还不是所有程序都这样,有的能自启动,有的不能。 不知道你们有没有遇到类似的情况?
|
单帖管理 | 引用 | 回复 |
deanzilin |
7楼 信息 | 搜索 | 邮箱 |
加好友 发短信 |
Post By:2014-7-12 15:41:00 [只看该作者]
谢谢,问题已经解决了。 还有个事情很奇怪,就是我设置好的开机自启动程序,在你们的评估底板上就可以自启动,可换成我自己设计的底板就不能启动了。 还不是所有程序都这样,有的能自启动,有的不能。 不知道你们有没有遇到类似的情况?
|
单帖管理 | 引用 | 回复 |
x10 |
8楼 |
Post By:2014-7-12 19:50:00 [只看该作者]
是同样的程序有时能启动,有时不能启动?还是说,有些程序肯定启动,有些不能启动。那些不能自动启动的程序,在桌面通过鼠标点击可以启动吗?
建议请把调试串口接上,把启动信息贴出来,应当能确定不启动的原因。
|
|
单帖管理 | 引用 | 回复 |
deanzilin |
9楼 信息 | 搜索 | 邮箱 |
加好友 发短信 |
Post By:2014-7-13 9:36:00 [只看该作者]
[此贴子已经被作者于2014-7-13 10:30:44编辑过]
|
单帖管理 | 引用 | 回复 |
deanzilin |
10楼 信息 | 搜索 | 邮箱 |
加好友 发短信 |
Post By:2014-7-13 9:41:00 [只看该作者]
[此贴子已经被作者于2014-7-13 10:30:28编辑过]
|
单帖管理 | 引用 | 回复 |
deanzilin |
11楼 信息 | 搜索 | 邮箱 |
加好友 发短信 |
Post By:2014-7-13 11:38:00 [只看该作者]
不好意思,测了一下还是能自启动的。
只是在打开com8时程序卡在那里,但同样的程序在评估底板上是可以正常打开com8的并执行下面的程序。
我还在找是哪里出了问题?是硬件的毛病吗?你们有遇到类似的情况吗? |
单帖管理 | 引用 | 回复 |
zhl |
12楼 |
Post By:2014-7-13 12:06:00 [只看该作者]
如果是怀疑com8的原因,建议你用测试程序step2_serialtest测试,只打开com8口进行同样的测试,这样做可通过一个简单的测试程序来排除硬件原因。 |
|
单帖管理 | 引用 | 回复 |