eHRPWM波形产生方法

(1)将pwm1.sh脚本拷至/opt/tools目录下。

(2)运行如下命令:

root@am57xx-evm:/opt/tools# chmod 777 pwm1.sh

root@am57xx-evm:/opt/tools# ./pwm1.sh 1000000 500000 200000

Set APWM1 mode acsuccess!

root@am57xx-evm:/opt/tools# cat /sys/kernel/debug/pwm

platform/dmtimer-pwm@16, 1 PWM device

pwm-0   (pwm_fan             ): requested enabled

platform/48440200.pwm, 2 PWM devices

pwm-0   (sysfs               ): requested enabled

pwm-1   (sysfs               ): requested enabled

platform/4843e100.ecap, 1 PWM device

pwm-0   (backlight           ): requested enabled

root@am57xx-evm:/opt/tools# cat /sys/class/pwm/pwmchip1/pwm0/{enable,period,duty_cycle}

1

1000000

500000

root@am57xx-evm:/opt/tools# cat /sys/class/pwm/pwmchip1/pwm1/{enable,period,duty_cycle}

1

1000000

200000

(3)然后用示波器测量EHRPWM2B引脚。

4)./pwm1.sh 1000000 500000 200000  (可以改变占空比)

(5)重启,可以改变周期。./pwm1.sh 2000000 500000 200000

本调试基于信迈科技XM5728-IDK-V3开发板。

AM5728: Beagle-x15 board the output for EHRPWM2A pins issue

https://e2e.ti.com/support/processors/f/791/t/929657?AM5728-Beagle-x15-board-the-output-for-EHRPWM2A-pins-issue

C6747 EHRPWM Example

https://processors.wiki.ti.com/index.php/C6747_EHRPWM_Example

Linux/AM6548: ehrpwm

https://e2e.ti.com/support/processors/f/791/t/748195

TI WIKI:

https://software-dl.ti.com/processor-sdk-linux/esd/docs/06_03_00_106/linux/Foundational_Components/Kernel/Kernel_Drivers/Display/PWM.html

Regarding CTRL_MMR0 tbclk, you need to enable this in driver file (pwm-tiehrpwm.c), you need to use register CTRLMMR_EPWM0_CTRL/0x00104140.

See for example how CTRLMMR_OLDI_DAT0_IO_CTRL/0x001041E0 register is used in below files:

linux-4.14.67/drivers/gpu/drm/tidss/tidss_dispc7.h
linux-4.14.67/drivers/gpu/drm/tidss/tidss_dispc7.c

Regards,
Pavel

~/XM/kernel/Linux/drivers$ vi pwm/pwm-tiehrpwm.c

https://git.ti.com/cgit/apps/tida01555/tree?h=master

Page 6931

~/XM/kernel/Linux/drivers$ vi irqchip/irq-crossbar.c

Are these codes useful?

C:\ti\processor_sdk_rtos_am57xx_6_03_00_106\pdk_am57xx_1_0_17\packages\ti\csl\example\gpio\gpio_interrupt.c

C:\ti\processor_sdk_rtos_am57xx_6_03_00_106\pdk_am57xx_1_0_17\packages\ti\csl\arch\a15\src\ interrupt.c

C:\ti\processor_sdk_rtos_am57xx_6_03_00_106\pdk_am57xx_1_0_17\packages\ti\csl\arch\c66x\ interrupt.c

Please refer to ~/pdk_am57xx_1_0_17/packages/ti/osal/src/tirtos/RegisterIntr_tirtos.c for the OSAL APIs you can use to install ISR in TI-RTOS.

You can also refer to ~/pdk_am57xx_1_0_17/packages/ti/drv/uart/src/v1/UART_v1.c as example how the APIs are used.

https://e2e.ti.com/support/processors/f/791/t/931094?CCS-AM5728-EHRPWM-Interrupt-in-DSP-with-TI-RTOS

InAM5728's DSP processor, we need EHRPWM Interrupt with TI RTOS. The question is how to register interrupt isr?

We need to detect the phase by  ehrpwm2A or ehrpwm2B interrupts when the counter is decreased from period to zero.

I have configured the registers for interrupt as here:

void PWM_InterruptConfig(void)

{

/*

* AM57x DSP does not have a defaultXbarconnection for PWM

* interrupts, need to use a reserved IRQXbarinstance forXbar

* interrupt configuration

*/

/* Use reserved XBAR_INST_DSP1_IRQ_34 */

CSL_xbarIrqConfigure(CSL_XBAR_IRQ_CPU_ID_DSP1, CSL_XBAR_INST_DSP1_IRQ_34,CSL_XBAR_PWMSS2_IRQ_ePWM1INT);

// disables the ePWM Event interrupt.

CSL_epwmEtIntrDisable(PWM_BASE_ADDRESS);

// Configures the interrupt source and interrupt period.

// Enable event time-base counter equal to zero.

// Generate an interrupt on the first event

CSL_epwmEtIntrCfg(PWM_BASE_ADDRESS, PWMSS_EPWM_ETSEL_INTSEL_CTR_0, PWMSS_EPWM_ETPS_INTPRD_GEN_FIRST_EVT);

// Enables the ePWM Event interrupt.

CSL_epwmEtIntrEnable(PWM_BASE_ADDRESS);

}

But I also write ISR, which needs to be registered or installed.

How to register it in TI RTOS?

Are these codes useful?

C:\ti\processor_sdk_rtos_am57xx_6_03_00_106\pdk_am57xx_1_0_17\packages\ti\csl\example\gpio\gpio_interrupt.c

C:\ti\processor_sdk_rtos_am57xx_6_03_00_106\pdk_am57xx_1_0_17\packages\ti\csl\arch\a15\src\ interrupt.c

C:\ti\processor_sdk_rtos_am57xx_6_03_00_106\pdk_am57xx_1_0_17\packages\ti\csl\arch\c66x\ interrupt.c

Thanks,

How to specify pinmux configuration for EHRPWM0 in motor_control example for IDK AM437x?

https://e2e.ti.com/support/processors/f/791/t/487977?How-to-specify-pinmux-configuration-for-EHRPWM0-in-motor-control-example-for-IDK-AM437x-

How to get AM335x ePWM interrupt

https://e2e.ti.com/support/legacy_forums/embedded/linux/f/354/p/474058/1705662

request_irq failed/GPIO Example

https://e2e.ti.com/support/processors/f/791/t/395791

Dts:

~/XM/kernel/Linux/arch/arm/boot/dts$ vi dra7.dtsi

~/XM/kernel/Linux/arch/arm/boot/dts$ vi am57xx-evm-common.dtsi

AM5728 eHRPWM 驱动和中断设计随笔相关推荐

  1. 第五期 中断设计 基于ARTY A7的MicroBlaze系统搭建与应用

    第五期 中断设计 基于ARTY A7的MicroBlaze系统搭建与应用 GPIO的中断 GPIO的中断--vitis部分 串口的中断 分析:GPIO,串口的中断怎么体现出来? GPIO的中断 (1) ...

  2. Linux kernel中断子系统之(五):驱动申请中断API【转】

    转自:http://www.wowotech.net/linux_kenrel/request_threaded_irq.html 一.前言 本文主要的议题是作为一个普通的驱动工程师,在撰写自己负责的 ...

  3. PPT资料下载 - 问题驱动的软件测试设计:强化测试用例设计

    测试用例设计是整个软件测试过程中非常重要的测试活动,需求规格说明是测试人员开展测试设计的主要参考输入.而在测试实践中基于需求规格说明得到的测试用例,在测试覆盖率.测试效率.测试有效性和测试质量等方面的 ...

  4. ARM中断分析之三:WinCE驱动的中断分析

    现在有许多高端的ARM芯片,像苹果.三星.华为都采用ARM芯片做为智能手机芯片. 这篇文章介绍基于ARM的WinCE操作系统的驱动的中断分析.WinCE驱动分为两类,这里介绍流驱动,流驱动比较简单. ...

  5. 计算机课具体任务驱动,计算机基础课程的任务驱动的教学设计与实践论文

    任务驱动 教学模式设计是基于多维.互动式的 (教师)主导-(学生)主体相结合 的教学设计理念.针对计算机课程在基础方面的教育,我国已经在上世纪八十年代纳入到了教育基础体系之中,经过阶段性努力,在这一方 ...

  6. yang模型中rpc_领域驱动模型(DDD)设计讲解

    一. 什么是领域驱动模型(DDD)? 领域驱动模型一种设计思想,我们又称为DDD设计思想.是一种为了解决传统设计思想带来的维护困难,沟通困难和交互困难而产生的一种新的思想.也解决了在部分公司中,一个项 ...

  7. linux中断调用spi函数,基于Linux的ARM与FPGA SPI驱动,中断函数调用spidev_sync_read(),出现异常...

    基于Linux的ARM与FPGA SPI驱动,中断函数调用spidev_sync_read(),出现错误 BUG: scheduling while atomic: spidev_test/1034/ ...

  8. 单侧游离端缺失设计图_单侧游离端附着体义齿的应力中断设计及其力学传导分析...

    弹性附着体义齿是一种高效的可摘局部义齿修复形式[,在修复远中游离端缺失时可以显著减少基牙受到的不良扭转力[.然而,由于弹性附着体的缓冲作用,基牙承受的咬牙合力向远中基托转移导致基托下方黏膜组织负担增加 ...

  9. 不做不明真相的开发者 之驱动与中断

            在为一款TI芯片做知识储备时遇到dsplink,再一次与和驱动,中断,不期而遇.工作三年了,驱动,中断,一直困扰我的一个大问题.或许是浮躁,每每想快速的得到答案,而每次总是更加的困惑. ...

最新文章

  1. .NET4.0并行计算技术基础(8)
  2. 在windows下安装concurrentlua
  3. python r语言 作图_R语言低级绘图函数-rect
  4. 韩国讨论到 2020 年拥抱开源操作系统
  5. Android 中文 API ——对话框 AlertDialog.Builder
  6. java中,在一个有序数组中插入元素,使得数组保持有序排列
  7. 内网渗透,横向移动总结(mimikatz域控)
  8. Oracle Bitmap 索引结构、如何存储及其优势
  9. 单精度浮点数(float)加法计算出错
  10. linux中jdk添加字体_LINUX下JDK安装字体
  11. docker 运行 php nginx_使用docker运行nginx
  12. 南邮-2022年6月电子商务练习自整理 - 选择篇
  13. kotlin list转map
  14. 【卡尔曼滤波原理及基本认知】
  15. 华为USG防火墙通过nat64 ipv6用户访问内网ipv4服务(原创,转发请注明出处)
  16. 模拟赛 东风谷早苗
  17. 【洛谷】P1427 小鱼的数字游戏
  18. JAVA面向对象的基础知识
  19. 什么时候不要采用微服务架构
  20. Bubble(17)

热门文章

  1. 一年级下册计算机教学计划,新人教版一年级数学下册教学计划
  2. 充电桩测试设备TK4860C交流充电桩检定装置
  3. php一句话论坛,PHP一句话
  4. Oracle 表空间时点恢复(TSPITR)
  5. turtle-绘制简易瞄准镜
  6. java常见的密码加密方式base64,Sha256,MD5
  7. 侏罗纪怪兽世界怎么登陆服务器未响应,全金属怪物一直登入不进去怎么办
  8. C#实现图书管理系统(课程设计)——第五步、查询界面及操作
  9. 【无人机设计与开发】推荐几个无人机网址
  10. unity3D---插件obi Rope---实现绳子效果