完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
分享一个在OMAPL138上用EDMA访问SPI的例程。
http://processors.wiki.ti.com/index.php/Main_Page Think Over Before Asking. http://www.catb.org/~esr/faqs/smart-questions.html#goal |
|
相关推荐
18个回答
|
|
为啥下载不了?
|
|
|
|
下载不了了,能不能给我邮箱发一份啊,我的邮箱是zjrayw168@163.com,非常感谢!!!!
|
|
|
|
能否共享一下,邮箱 hanjia0604@126.com,,此外想咨询一下用CCS3.3 写ARM端的中断怎么写?尤其是asm文件,谢谢
|
|
|
|
更新了。现在可以下载了。你的第二个问题另起一个贴子吧。 http://processors.wiki.ti.com/index.php/Main_Page Think Over Before Asking. http://www.catb.org/~esr/faqs/smart-questions.html#goal |
|
|
|
|
|
|
|
是的,你在做什么项目,在什么公司,我们可以用邮箱联系。 http://processors.wiki.ti.com/index.php/Main_Page Think Over Before Asking. http://www.catb.org/~esr/faqs/smart-questions.html#goal |
|
|
|
我用楼主的ASM文件可以实现中断,但是又出现其他问题,我的串口函数只能收,不能发,用我原来的asm文件,串口收发是没有问题的。我用的是UART0
极度郁闷,希望高手提点。qq147699355 邮箱 hanjia0604@126.com 我的asm文件如下; ;****************************************************************************** ;* BOOT v4.6.4 * ;* Copyright (c) 1996-2010 Texas Instruments Incorporated * ;****************************************************************************** ;**************************************************************************** ;* BOOT.ASM ;* ;* THIS IS THE INITAL BOOT ROUTINE FOR TMS470 C++ PROGRAMS. ;* IT MUST BE LINKED AND LOADED WITH ALL C++ PROGRAMS. ;* ;* THIS MODULE PERFORMS THE FOLLOWING ACTIONS: ;* 1) ALLOCATES THE STACK AND INITIALIZES THE STACK POINTER ;* 2) CALLS AUTO-INITIALIZATION ROUTINE ;* 3) CALLS THE FUNCTION MAIN TO START THE C++ PROGRAM ;* 4) CALLS THE STANDARD EXIT ROUTINE ;* ;* THIS MODULE DEFINES THE FOLLOWING GLOBAL SYMBOLS: ;* 1) __stack STACK MEMORY AREA ;* 2) _c_int00 BOOT ROUTINE ;* ;**************************************************************************** .if __TI_TMS470_V7M3__ .thumbfunc _c_int00 .else .armfunc _c_int00 .endif ;**************************************************************************** ; Accomodate different lowerd names in different ABIs ;**************************************************************************** .if __TI_EABI_ASSEMBLER .asg _args_main, ARGS_MAIN_RTN .asg exit, EXIT_RTN .asg main_func_sp, MAIN_FUNC_SP .elseif __TI_ARM9ABI_ASSEMBLER | .TMS470_32BIS .asg __args_main, ARGS_MAIN_RTN .asg _exit, EXIT_RTN .asg _main_func_sp, MAIN_FUNC_SP .else .asg $_args_main, ARGS_MAIN_RTN .asg $exit, EXIT_RTN .asg _main_func_sp, MAIN_FUNC_SP .endif .if .TMS470_16BIS ;**************************************************************************** ;* 16 BIT STATE BOOT ROUTINE * ;**************************************************************************** .if __TI_TMS470_V7M3__ .state16 .else .state32 .endif .global __stack ;*************************************************************** ;* DEFINE THE USER MODE STACK (DEFAULT SIZE IS 512) ;*************************************************************** __stack:.usect ".stack", 0, 4 .global _c_int00 ;*************************************************************** ;* FUNCTION DEF: _c_int00 ;*************************************************************** _c_int00: .asmfunc .if !__TI_TMS470_V7M3__ .if __TI_NEON_SUPPORT__ | __TI_VFP_SUPPORT__ ;*------------------------------------------------------ ;* SETUP PRIVILEGED AND USER MODE ACCESS TO COPROCESSORS ;* 10 AND 11, REQUIRED TO ENABLE NEON/VFP ;* COPROCESSOR ACCESS CONTROL REG ;* BITS [23:22] - CP11, [21:20] - CP10 ;* SET TO 0b11 TO ENABLE USER AND PRIV MODE ACCESS ;*------------------------------------------------------ MRC p15,#0x0,r0,c1,c0,#2 MOV r3,#0xf00000 ORR r0,r0,r3 MCR p15,#0x0,r0,c1,c0,#2 ;*------------------------------------------------------ ; SET THE EN BIT, FPEXC[30] TO ENABLE NEON AND VFP ;*------------------------------------------------------ MOV r0,#0x40000000 FMXR FPEXC,r0 .endif ;------------------------------------------------------ ;* SET TO USER MODE ;*------------------------------------------------------ MRS r0, cpsr BIC r0, r0, #0x1F ; CLEAR MODES ORR r0, r0, #0x10 ; SET USER MODE MSR cpsr_cf, r0 ;*------------------------------------------------------ ;* CHANGE TO 16 BIT STATE ;*------------------------------------------------------ ADD r0, pc, #1 BX r0 .state16 .endif ;*------------------------------------------------------ ;* INITIALIZE THE USER MODE STACK ;*------------------------------------------------------ LDR r0, c_stack MOV sp, r0 LDR r0, c_STACK_SIZE ADD sp, r0 ;*----------------------------------------------------- ;* ALIGN THE STACK TO 64-BITS IF EABI. ;*----------------------------------------------------- .if __TI_EABI_ASSEMBLER MOV r7, sp MOV r0, #0x07 BIC r7, r0 ; Clear upper 3 bits for 64-bit alignment. MOV sp, r7 .endif ;*----------------------------------------------------- ;* SAVE CURRENT STACK POINTER FOR SDP ANALYSIS ;*----------------------------------------------------- LDR r0, c_mf_sp MOV r7, sp STR r7, [r0] ;*------------------------------------------------------ ;* Perform all the required initilizations: ;* - Process BINIT Table ;* - Perform C auto initialization ;* - Call global constructors ;*------------------------------------------------------ BL __TI_auto_init ;*------------------------------------------------------ ;* CALL APPLICATION ;*------------------------------------------------------ BL ARGS_MAIN_RTN ;*------------------------------------------------------ ;* IF APPLICATION DIDN'T CALL EXIT, CALL EXIT(1) ;*------------------------------------------------------ MOV r0, #1 BL EXIT_RTN ;*------------------------------------------------------ ;* DONE, LOOP FOREVER ;*------------------------------------------------------ L1: B L1 .endasmfunc .else ; !.TMS470_16BIS ;**************************************************************************** ;* 32 BIT STATE BOOT ROUTINE * ;**************************************************************************** .global __stack ;*************************************************************** ;* DEFINE THE USER MODE STACK (DEFAULT SIZE IS 512) ;*************************************************************** __stack:.usect ".stack", 0, 4 .global _c_int00 ;*************************************************************** ;* FUNCTION DEF: _c_int00 ;*************************************************************** _c_int00: .asmfunc .if __TI_NEON_SUPPORT__ | __TI_VFP_SUPPORT__ ;*------------------------------------------------------ ;* SETUP PRIVILEGED AND USER MODE ACCESS TO COPROCESSORS ;* 10 AND 11, REQUIRED TO ENABLE NEON/VFP ;* COPROCESSOR ACCESS CONTROL REG ;* BITS [23:22] - CP11, [21:20] - CP10 ;* SET TO 0b11 TO ENABLE USER AND PRIV MODE ACCESS ;*------------------------------------------------------ MRC p15,#0x0,r0,c1,c0,#2 MOV r3,#0xf00000 ORR r0,r0,r3 MCR p15,#0x0,r0,c1,c0,#2 ;*------------------------------------------------------ ; SET THE EN BIT, FPEXC[30] TO ENABLE NEON AND VFP ;*------------------------------------------------------ MOV r0,#0x40000000 FMXR FPEXC,r0 .endif ;*------------------------------------------------------ ;* SET TO USER MODE ;*------------------------------------------------------ MRS r0, cpsr BIC r0, r0, #0x1F ; CLEAR MODES ORR r0, r0, #0x13 ; SET USER MODE MSR cpsr_cf, r0 ;*------------------------------------------------------ ;* INITIALIZE THE USER MODE STACK ;*------------------------------------------------------ LDR sp, c_stack LDR r0, c_STACK_SIZE ADD sp, sp, r0 ;*----------------------------------------------------- ;* ALIGN THE STACK TO 64-BITS IF EABI. ;*----------------------------------------------------- .if __TI_EABI_ASSEMBLER BIC sp, sp, #0x07 ; Clear upper 3 bits for 64-bit alignment. .endif ;*----------------------------------------------------- ;* SAVE CURRENT STACK POINTER FOR SDP ANALYSIS ;*----------------------------------------------------- LDR r0, c_mf_sp STR sp, [r0] ;*------------------------------------------------------ ;* Perform all the required initilizations: ;* - Process BINIT Table ;* - Perform C auto initialization ;* - Call global constructors ;*------------------------------------------------------ BL __TI_auto_init ;*------------------------------------------------------ ;* CALL APPLICATION ;*------------------------------------------------------ BL ARGS_MAIN_RTN ;*------------------------------------------------------ ;* IF APPLICATION DIDN'T CALL EXIT, CALL EXIT(1) ;*------------------------------------------------------ MOV R0, #1 BL EXIT_RTN ;*------------------------------------------------------ ;* DONE, LOOP FOREVER ;*------------------------------------------------------ L1: B L1 .endasmfunc .endif ; !.TMS470_16BIS ;*************************************************************** ;* CONSTANTS USED BY THIS MODULE ;*************************************************************** c_stack .long __stack c_STACK_SIZE .long __STACK_SIZE c_mf_sp .long MAIN_FUNC_SP .if __TI_EABI_ASSEMBLER .data .align 4 _stkchk_called: .field 0,32 .else .sect ".cinit" .align 4 .field 4,32 .field _stkchk_called+0,32 .field 0,32 .bss _stkchk_called,4,4 .symdepend ".cinit", ".bss" .symdepend ".cinit", ".text" .symdepend ".bss", ".text" .endif ;****************************************************** ;* UNDEFINED REFERENCES * ;****************************************************** .global _stkchk_called .global __STACK_SIZE .global ARGS_MAIN_RTN .global MAIN_FUNC_SP .global EXIT_RTN .global __TI_auto_init .end |
|
|
|
uwujjsdfe 发表于 2018-6-21 19:35 Hai,Tony,您的邮箱多少呢?有些项目信息想和您交流一下。 |
|
|
|
tony-tang@ti.com http://processors.wiki.ti.com/index.php/Main_Page Think Over Before Asking. http://www.catb.org/~esr/faqs/smart-questions.html#goal |
|
|
|
lifei639156 发表于 2018-6-21 19:57 MARK |
|
|
|
能否共享一个EDMA方式读取EMIFA数据的例程。不胜感激!
|
|
|
|
EDMA访问EMIFA需要通过其它手段来触发,如GPIO等,所以你需要参考另一个例程GPIO触发EDMA传输。 http://processors.wiki.ti.com/index.php/Main_Page Think Over Before Asking. http://www.catb.org/~esr/faqs/smart-questions.html#goal |
|
|
|
lifei639156 发表于 2018-6-21 20:28 单核的C6748使用EDMA3读SPI1 ,总是没有反应,请问也需要什么触发么 |
|
|
|
pinmux,psc配置对了没有。 http://processors.wiki.ti.com/index.php/Main_Page Think Over Before Asking. http://www.catb.org/~esr/faqs/smart-questions.html#goal |
|
|
|
lifei639156 发表于 2018-6-21 19:23 一直被一个问题困扰着,就是ARM核要用SPI的EDMA,DSP核要用mcasp的EDMA,但是这两个EDMA通道怒属于同一个edma控制器,但是手册上写着同一个edma控制器有4个EDMA3_0_CC0_INT[3:0],但是在库.h的中断向量表里面同一个EDMA控制器只有一个中断完成向量,两个核可以同时用中断的方式使用同一个EDMA通道控制器的不同通道吗?比如ARM用SPI EDMA中断方式,DSP用MCASP EDMA中断方式,如果可以的话怎么用?因为我在库文件里面只找到一个中断向量,但是芯片手册里面有4个中断向量。 |
|
|
|
leon2014xn 发表于 2018-6-21 20:55 #1. SPI与EDMA都属于CC0的事件。 #2. CC0在AINTC上有中断号EDMA3_0_CC0_INT0,在DSP上有事件EDMA3_0_CC0_INT1。 #3. 那么要同时用,则在ARM端通过EDMA的shadow region 0控制SPI的EDMA, 在DSP端通过shadow region 1 控制MCASP的EDMA就可以了。 BWT,我没看到有4个shadow region的中断事件EDMA3_0_CC0_INT[3:0],只看到2个EDMA3_0_CC0_INT[1:0] http://processors.wiki.ti.com/index.php/Main_Page Think Over Before Asking. http://www.catb.org/~esr/faqs/smart-questions.html#goal |
|
|
|
lifei639156 发表于 2018-6-21 21:05 tonyedma通道控制器错误处理只有一个中断向量,但是它在双核里面都对应一个中断号,双核里面可以同时注册同一个edma通道控制器错误处理中断嘛? |
|
|
|
leon2014xn 发表于 2018-6-21 21:24 http://processors.wiki.ti.com/index.php/Main_Page Think Over Before Asking. http://www.catb.org/~esr/faqs/smart-questions.html#goal |
|
|
|
只有小组成员才能发言,加入小组>>
579 浏览 1 评论
416 浏览 1 评论
611 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
892 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
702 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
178浏览 29评论
1142浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
315浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
276浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
125浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-31 10:17 , Processed in 0.703046 second(s), Total 77, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号