根据原理图,控制485状态的是GPIO12_2管脚

查找Hi3559AV100_PINOUT_CN.xlxs文档,发现这个管脚功能是复用的, 需将其功能设为GPIO12_2

首先编译himm

调用himm读0x1F00106C地址,发现值为0x71,第一位是1,GPIO12_2没启用。用himm将其值改为0x70,启用。

/home/vtrack/himm 0x1F00106C   0x70

GPIO12_2对应12*8+2=gpio98

echo 1 > /sys/class/gpio/gpio98/value   拉高电平为写

echo 0 > /sys/class/gpio/gpio98/value   拉低为读

3.0的内核版本以后有TI OMAP有自动切换485收发方向功能,增加设备树使内核可以自动切换收发方向。

3559所用串口驱动为pl011,没有自动切换功能,需修改代码。串口驱动可通过启动时的打印或设备树中描述发现。对应驱动文件为amba-pl011.c

启动

12100000.uart: ttyAMA0 at MMIO 0x12100000 (irq = 13, base_baud = 0) is a PL011 rev2

console [ttyAMA0] enabled

12101000.uart: ttyAMA1 at MMIO 0x12101000 (irq = 14, base_baud = 0) is a PL011 rev2

12102000.uart: ttyAMA2 at MMIO 0x12102000 (irq = 15, base_baud = 0) is a PL011 rev2

12103000.uart: ttyAMA3 at MMIO 0x12103000 (irq = 16, base_baud = 0) is a PL011 rev2

12104000.uart: ttyAMA4 at MMIO 0x12104000 (irq = 17, base_baud = 0) is a PL011 rev2

设备树:

uart1: uart@12101000 {

compatible = "arm,pl011", "arm,primecell";

reg = <0x12101000 0x1000>;

interrupts = <0 7 4>;

clocks = <&clock HI3559AV100_UART1_CLK>;

clock-names = "apb_pclk";

dmas = <&hiedmacv310_0 2 2>, <&hiedmacv310_0 3 3>;

dma-names = "tx","rx";

status = "disabled";

};

修改代码切换高低电平

static int pl011_startup(struct uart_port *port)
{struct uart_amba_port *uap =container_of(port, struct uart_amba_port, port);unsigned int cr;int retval;retval = pl011_hwinit(port);if (retval)goto clk_dis;retval = pl011_allocate_irq(uap);if (retval)goto clk_dis;pl011_write(uap->vendor->ifls, uap, REG_IFLS);spin_lock_irq(&uap->port.lock);/* restore RTS and DTR */cr = uap->old_cr & (UART011_CR_RTS | UART011_CR_DTR);cr |= UART01x_CR_UARTEN | UART011_CR_RXE | UART011_CR_TXE;pl011_write(cr, uap, REG_CR);spin_unlock_irq(&uap->port.lock);/** initialise the old status of the modem signals*/uap->old_status = pl011_read(uap, REG_FR) & UART01x_FR_MODEM_ANY;/* Startup DMA */pl011_dma_startup(uap);pl011_enable_interrupts(uap);//初始化if (port->line == 1){gpio_request(98, NULL);gpio_direction_output(98, 0);}return 0;clk_dis:clk_disable_unprepare(uap->clk);return retval;
}
static void pl011_stop_tx(struct uart_port *port)
{struct uart_amba_port *uap =container_of(port, struct uart_amba_port, port);uap->im &= ~UART011_TXIM;pl011_write(uap->im, uap, REG_IMSC);pl011_dma_tx_stop(uap);if (port->line == 1){mdelay(20);//需要延时等待发送完成gpio_set_value(98, 0);}
}
static void pl011_start_tx(struct uart_port *port)
{struct uart_amba_port *uap =container_of(port, struct uart_amba_port, port);if (port->line == 1){gpio_set_value(98, 1);}if (!pl011_dma_tx_start(uap))pl011_start_tx_pio(uap);
}

以下为TI omap-serial中相关

海思3559 485收发相关推荐

  1. 海思3559万能平台搭建:串口编程

    前言   平常的工作使用中,总是免不了要和串口打交道,协议的收发也经常通过串口来实现,海思3559下的串口和标准的linux下串口大同小异,可以参考之前zynq的串口编程,也可以直接阅读本文 使能串口 ...

  2. 海思3559移植yolov3

    此人博客上有完整教程: https://blog.csdn.net/avideointerfaces/article/category/8762084 海思3559移植yolov3 海思AI芯片(Hi ...

  3. 海思3559 人脸识别

    https://github.com/hanson-young/nniefacelib nniefacelib是一个在海思35xx系列芯片上运行的人脸算法库,目前集成了mobilefacenet和re ...

  4. 海思3559与全志a83t比较

    全志 a838t 8核 cpu0主频 1800000m,cpu7 480000m 满负荷运行 1608000m 海思开发板运行 第一次 opencv 运行图像处理 全志开发板需要35ms  海思355 ...

  5. 海思3559:百兆网口的配置

    前言   海思3559的开发板网口是默认支持千兆/百兆的,这里的自适应,是从RJ45出来后和PC侧的自适应,而实际上3559对于网口的设置,默认都是RGMII模式,除了对应的软件配置,硬件部分需要通过 ...

  6. 海思3559编译live555

    1.找到live555最新的安装包http://www.live555.com/liveMedia/public/ 下载live555-latest.tar.gz 2.安装live555,必须先安装o ...

  7. 海思3559万能平台搭建:DDR移植的一些问题

    前言:   开发板是绝对无误的硬件环境,但是我们平时的开发肯定会接触自己搭建的硬件环境,难免会有这样那样的小问题,这里给出一次DDR的调试过程 问题描述   海思3559开发板可以用默认配置表格生成的 ...

  8. 海思3559开发常识储备:相关名词全解

    前言   接连啃了两个sample,还是觉得笼笼统统模模糊糊,没有达到想要的一目了然的程度,那就再整理整理资料,补些硬货吧 图像和像素格式 颜色: (1)颜色是主观还是客观存在?    颜色的本质是光 ...

  9. 海思3559万能平台搭建:添加一个新的sensor

    前言   海思对摄像头的支持是只有固定的,如果我们想更换新的相机,让fpga接入通过lvds接口给3559提供视频源的话,除了相关配置,还需要添加新的sensor库,编译新的isp库,而且,如果移植不 ...

最新文章

  1. 多台linux无密码访问之方法二
  2. c语言合法的数据类型关键字有哪些,C语言提供的合法的数据类型关键字是_________....
  3. 一个可以显示具体时间的日历控件应用
  4. 交换机工作原理_什么是POE交换机,它有什么好处?
  5. Netty学习笔记(一)Netty客户端源码分析
  6. 江小白包装设计原型_雪碧和江小白的品牌跨界合作之旅可谓是一场品牌包装的视觉盛宴...
  7. 分布式精华问答 | 如何实现分布式系统的高可用性?
  8. 互联网日报 | 7月8日 星期四 | 小鹏汽车港交所上市;同程生活宣布申请破产;紫光国微市值突破千亿元...
  9. mysql5.6解压版 1067_MySQL5.6解压版服务无法启动—系统错误1067
  10. oracle下tmp后缀文件怎么打开,什么是TMP文件,怎么打开?(图文)
  11. 【图像处理】MATLAB:图像压缩
  12. ssh登录到esxi机器中后开关虚拟机
  13. Redis使用详细教程
  14. Java项目迁移到uap上_Tomcat启动,不能加载项目问题。
  15. OpenCV中集成目标跟踪算法介绍
  16. vue 实现元素可拖曳
  17. MySQL教程——MySQL注释:单行注释和多行注释
  18. 放弃vlookup吧,这3种EXCEL多表关联方法“强得很”
  19. display: flex属性介绍
  20. vmware虚拟服务器密码忘记,VMWare虚拟机忘记window server 2012 administrator密码 重置密码教程...

热门文章

  1. Hexo的个性化配置(二)
  2. Dyson Sphere Program 戴森球计划 个人心得
  3. 英语单词的起源-Aegean-爱琴海
  4. 学PS基础:Photoshop 技能167个­
  5. PHP控制反转和依赖注入的理解(通俗易懂)
  6. 计算机图形学 读书笔记(五) 网格参数化 Triangulated Surface Parameterization
  7. php echo 输出字符串函数详解、多行输出方法
  8. HTML5 3D书本翻页动画
  9. jquery控制css3动画 列表,10款jQuery/CSS3动画应用 超实用
  10. 银河麒麟服务器 linux 设置 固定IP地址