海思3559 485收发
根据原理图,控制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收发相关推荐
- 海思3559万能平台搭建:串口编程
前言 平常的工作使用中,总是免不了要和串口打交道,协议的收发也经常通过串口来实现,海思3559下的串口和标准的linux下串口大同小异,可以参考之前zynq的串口编程,也可以直接阅读本文 使能串口 ...
- 海思3559移植yolov3
此人博客上有完整教程: https://blog.csdn.net/avideointerfaces/article/category/8762084 海思3559移植yolov3 海思AI芯片(Hi ...
- 海思3559 人脸识别
https://github.com/hanson-young/nniefacelib nniefacelib是一个在海思35xx系列芯片上运行的人脸算法库,目前集成了mobilefacenet和re ...
- 海思3559与全志a83t比较
全志 a838t 8核 cpu0主频 1800000m,cpu7 480000m 满负荷运行 1608000m 海思开发板运行 第一次 opencv 运行图像处理 全志开发板需要35ms 海思355 ...
- 海思3559:百兆网口的配置
前言 海思3559的开发板网口是默认支持千兆/百兆的,这里的自适应,是从RJ45出来后和PC侧的自适应,而实际上3559对于网口的设置,默认都是RGMII模式,除了对应的软件配置,硬件部分需要通过 ...
- 海思3559编译live555
1.找到live555最新的安装包http://www.live555.com/liveMedia/public/ 下载live555-latest.tar.gz 2.安装live555,必须先安装o ...
- 海思3559万能平台搭建:DDR移植的一些问题
前言: 开发板是绝对无误的硬件环境,但是我们平时的开发肯定会接触自己搭建的硬件环境,难免会有这样那样的小问题,这里给出一次DDR的调试过程 问题描述 海思3559开发板可以用默认配置表格生成的 ...
- 海思3559开发常识储备:相关名词全解
前言 接连啃了两个sample,还是觉得笼笼统统模模糊糊,没有达到想要的一目了然的程度,那就再整理整理资料,补些硬货吧 图像和像素格式 颜色: (1)颜色是主观还是客观存在? 颜色的本质是光 ...
- 海思3559万能平台搭建:添加一个新的sensor
前言 海思对摄像头的支持是只有固定的,如果我们想更换新的相机,让fpga接入通过lvds接口给3559提供视频源的话,除了相关配置,还需要添加新的sensor库,编译新的isp库,而且,如果移植不 ...
最新文章
- 多台linux无密码访问之方法二
- c语言合法的数据类型关键字有哪些,C语言提供的合法的数据类型关键字是_________....
- 一个可以显示具体时间的日历控件应用
- 交换机工作原理_什么是POE交换机,它有什么好处?
- Netty学习笔记(一)Netty客户端源码分析
- 江小白包装设计原型_雪碧和江小白的品牌跨界合作之旅可谓是一场品牌包装的视觉盛宴...
- 分布式精华问答 | 如何实现分布式系统的高可用性?
- 互联网日报 | 7月8日 星期四 | 小鹏汽车港交所上市;同程生活宣布申请破产;紫光国微市值突破千亿元...
- mysql5.6解压版 1067_MySQL5.6解压版服务无法启动—系统错误1067
- oracle下tmp后缀文件怎么打开,什么是TMP文件,怎么打开?(图文)
- 【图像处理】MATLAB:图像压缩
- ssh登录到esxi机器中后开关虚拟机
- Redis使用详细教程
- Java项目迁移到uap上_Tomcat启动,不能加载项目问题。
- OpenCV中集成目标跟踪算法介绍
- vue 实现元素可拖曳
- MySQL教程——MySQL注释:单行注释和多行注释
- 放弃vlookup吧,这3种EXCEL多表关联方法“强得很”
- display: flex属性介绍
- vmware虚拟服务器密码忘记,VMWare虚拟机忘记window server 2012 administrator密码 重置密码教程...
热门文章
- Hexo的个性化配置(二)
- Dyson Sphere Program 戴森球计划 个人心得
- 英语单词的起源-Aegean-爱琴海
- 学PS基础:Photoshop 技能167个
- PHP控制反转和依赖注入的理解(通俗易懂)
- 计算机图形学 读书笔记(五) 网格参数化 Triangulated Surface Parameterization
- php echo 输出字符串函数详解、多行输出方法
- HTML5 3D书本翻页动画
- jquery控制css3动画 列表,10款jQuery/CSS3动画应用 超实用
- 银河麒麟服务器 linux 设置 固定IP地址