问答

汇集网友智慧,解决技术难题

21ic问答首页 - TAG - dspic33
  • 求助各位大佬dspic33ev系列引脚映射SPI2存在问题 sos

    本人使用DSPIC33ev128与AD7606进行通信的过程中使用默认的SPI1可以正确读取7606总线数据,现在改用可映射的SPI2就出现以下问题。 问题1:片选信号在MISO的最后一个周期没有发完就拉高了,如下图所示 问题2:示波器看有输出信号但是SPI2BUF一直为空,单片机没有收到,while (!SPI2STATbits.SPIRBF)这个判别条件始终无法为通过。 问题3:单片机MOSI在发送两个字的数据,如0xff,示波器上显示输出只有一半,只有改为0xffff才显示完全 希望各位大佬不吝赐教,非常感谢代码如下: void SPI2_Init(void)//主模式 { TRISCbits.TRISC8 = 0;//设置为输出 SCK TRISCbits.TRISC2 = 1;//设置为输入 MISO TRISCbits.TRISC6 = 0;//设置输出 MOSI RPOR7bits.RP56R = 0b001001;//配置RP35为SCK2引脚 RC8 RPINR22bits.SDI2R = 0b0110010;//配置RPI34为MISO引脚 RB2 RPOR6bits.RP54R = 0b001000;//配置RP54为MOSI引脚 RC IFS2bits.SPI2IF = 0; //清中断 IEC2bits.SPI2IE = 0; //中断禁止 SPI2CON1bits.SPRE=0b001; SPI2CON1bits.PPRE=0b01; SPI2CON1bits.DISSCK = 0; //使能内部 SPI 时钟 SPI2CON1bits.DISSDO = 0; //SDOx引脚由模块控制 SPI2CON1bits.MODE16 = 1; //通信为字节宽 (16位) SPI2CON1bits.SMP = 0; //输入数据在数据输出时间末端采样 SPI2CON1bits.CKE = 0; //串行输出数据在时钟从工作状态转变为空闲状态时变化 SPI2CON1bits.CKP = 1; //空闲状态时钟信号为高电平; SPI2CON1bits.SSEN = 0;//模块不使用SS引脚 SPI2CON1bits.MSTEN = 1; //主控模式 SPI2CON2bits.SPIBEN = 0; //传统模式 SPI2STATbits.SPIEN = 1; //使能模块并将SCKx、SDOx、SDIx和SSx配置为串口引脚 SPI2BUF = 0x0000; //写0 IFS2bits.SPI2IF = 0; //清中断 IEC2bits.SPI2IE = 1; //使能中断 } unsigned int SPI2_ReadByte(unsigned int TxData) { SPI2BUF = TxData; // while (!SPI2STATbits.SPIRBF); while(SPI2STATbits.SPITBF); return SPI2BUF; } void AD7606_ReadData(void) { unsigned int i; AD_CS_L; for(i=0;i<8;i++) { DB_data[i] = SPI2_ReadByte(dummy); } AD_CS_H; } void __attribute__((__interrupt__, auto_psv)) _SPI2Interrupt(void) { IFS2bits.SPI2IF = 0;//中断标志清零 }

    映射 ev dspic33 单片机 技术交流 嵌入式

    109浏览量 0回复量 关注量
  • 芯片是dsPIC33CK32MP105, 我的ADC轉換結果永遠是0? 請問哪裡錯了?

    [backcolor=rgb(255, 255, 255)][font=Calibri, Helvetica, sans-serif]Dear Supporter,[/font][/backcolor] [backcolor=rgb(255, 255, 255)][font=Calibri, Helvetica, sans-serif]如提, 芯片是dsPIC33CK32MP105, 這個芯片我第一次使用ADC, 好複雜, 我看了Datashet一周了, 還是搞不定.請求協助.[/font] [font=Calibri, Helvetica, sans-serif]我的基本設定: 使用ADC中斷, 使用腳位AN0腳(如附圖), 代碼是MCC產生的.已經執行了ADC相關的代碼了。[/font] [font=Calibri, Helvetica, sans-serif]我在方案中加入了一個AD 0_ENABLE()的測試代碼(如下方的while(1)中, 我在DEBUG模式中等待中斷發生,然後在中斷中發現ADC的結果都是0,[/font] [font=Calibri, Helvetica, sans-serif]請問哪裡錯了? 因為無法附上我的方案, 所以我只能提問.[/font] [font=Calibri, Helvetica, sans-serif] SYSTEM_Initialize();[/font] [font=Calibri, Helvetica, sans-serif] ADC1_Initialize();[/font] [font=Calibri, Helvetica, sans-serif] ADC1_Core0PowerEnable ( );[/font] [font=Calibri, Helvetica, sans-serif] ADC1_SharedCorePowerEnable ( );[/font] [font=Calibri, Helvetica, sans-serif] IO_Iintialize(); /* Initial set I/O */[/font] [font=Calibri, Helvetica, sans-serif] //======================================================================[/font] [font=Calibri, Helvetica, sans-serif] INTERRUPT_Initialize ();[/font] [font=Calibri, Helvetica, sans-serif] INTCON1bits.NSTDIS = 0; /* Interrupt nesting enabled here */[/font] [font=Calibri, Helvetica, sans-serif] INTCON2bits.GIE = 1; /*INTERRUPT_GlobalEnable();=INTCON2bits.GIE = 1;*/[/font] [font=Calibri, Helvetica, sans-serif] while(1) { DISC=1;//放電 d_ms(10); DISC=0;//充電到3.3v, 已經電阻1k焊接到3.3v ADC1_ChannelSelect(channel_AN0);//選擇ADC的輸入腳位 ADC0_ENABLE();//開啟ADC d_ms(1000); //在這裡等待ADC中斷產生, 並且已經在中斷設置了暫停點, 也有成功產生了中斷, 但是讀值永遠是0。 } [/font] [font=Calibri, Helvetica, sans-serif]adc1.c代碼[/font] [font=Calibri, Helvetica, sans-serif]void __attribute__ ( ( __interrupt__ , auto_psv, weak ) ) _ADCAN0Interrupt ( void ) { uint16_t valchannel_AN0; //Read the ADC value from the ADCBUF valchannel_AN0 = ADCBUF0; if(ADC1_channel_AN0DefaultInterruptHandler) { ADC1_channel_AN0DefaultInterruptHandler(valchannel_AN0); } V_AN0=valchannel_AN0; //中斷服務程序, 在這裡暫停檢查轉換的結果 //clear the channel_AN0 interrupt flag IFS5bits.ADCAN0IF = 0; } [/font] [font=Calibri, Helvetica, sans-serif][img]https://mail.qq.com/cgi-bin/viewfile?f=98ADFBEBB0E06B6E7717D3FA89DB6FF9A96ACB04E35C6615B04ADB92C496168886575533777EF7481907AD4FCE680C45E8B071B45FFB25B000D4AC1696FAA987735CE5B372EEA9A722BF3CD80C64AC0465B8BF9FC439120914BBB8D9133EC200&mailid=ZL0006_Pb_NejGMiTEu9WUAMVqj1da&sid=be8o1J-VoRk4vi5L&net=448509214[/img][/font] [font=Calibri, Helvetica, sans-serif]//ADC的中斷服務程式[/font] [font=Calibri, Helvetica, sans-serif]//================================================[/font] [font=Calibri, Helvetica, sans-serif]void __attribute__ ( ( __interrupt__ , auto_psv, weak ) ) _ADCAN0Interrupt ( void ) { uint16_t valchannel_AN0; //Read the ADC value from the ADCBUF valchannel_AN0 = ADCBUF0; valchannel_AN0 = ADCBUF2; valchannel_AN0 = ADCBUF3; valchannel_AN0 = ADCBUF19; valchannel_AN0 = ADCBUF20; if(ADC1_channel_AN0DefaultInterruptHandler) { ADC1_channel_AN0DefaultInterruptHandler(valchannel_AN0); } V_AN0=valchannel_AN0; //clear the channel_AN0 interrupt flag IFS5bits.ADCAN0IF = 0; } [/font] [/backcolor]

    单片机 MUC ADC dspic33

    2908浏览量 7回复量 关注量
  • dsPIC33EP512MU814不同封装之间可以直接烧程序吗? sos

    [i=s] 本帖最后由 小十二呀 于 2021-11-23 15:47 编辑 [/i] 我的样机使用的MCU是dsPIC33EP512MU814-I/PL,封装是LQFP,我们买到的只有dsPIC33EP512MU814-I/PH,都是144引脚,只是芯片大小和引脚间距不一样,请问可以直接烧程序吗?需要对程序进行修改吗?

    DSC Microchip MCU dspic33 封装 引脚

    1540浏览量 0回复量 关注量
  • DSPIC33EP无法发送字符串

    请教一下大家,使用DSPIC33EP128mc506,串口2,可以一个字符一个字符发送,但是却无法发送字符串,用MPLAB发现 str 永远指向一个地址,名称str 类型char* ( PSV ? ) 地址0x1058 ,但是str的值会增加,然后*str的值一直为为'ÿ'; 0xff 代码: void bsp_uart2_SendByte(uint8_t ch) { if(!U2STAbits.UTXBF) { U2TXREG = ch; } } void bsp_uart2_SendString(char * str) { while(* str != '\0') { bsp_uart2_SendByte( * str ++); } while(U2STAbits.TRMT == 0); }

    dspic33 字符串 BSP se UART2

    4645浏览量 2回复量 关注量
  • dsPIC33CK64MC105电平变化通知中断问题

    我在RA2上使用电平变中断,现在的问题是IO上电平发生变化后不没有中断信号产生,不知道哪里出问题了,{ _TRISA2 = 1; _CNPUA2 = 1; _CNPDA2 = 0; CNCONA = 0x8800; CNEN0A = 0x0004;//RA2 CNEN1A = 0x0004;//下降沿 CNFA = 0x0000; IFS0bits.CNAIF = 0;//清除中断标志 IEC0bits.CNAIE = 1; }

    ck 电平 dspic33 AI IO npu

    3206浏览量 1回复量 关注量
  • DSPIC33E系列新品PWM发波问题请教 sos

    您好,我想用dsp33E系列(dsp33EP64GS505)的芯片产生一个双脉冲的PWM波,在一个PWM周期内产生两个脉冲,这两个脉冲关于周期中间时刻对齐。请问各位大牛,有什么办法产生这样的PWM脉冲吗?非常感谢!

    dsp33EP dspic33 PWM 脉冲 芯片 4G

    2198浏览量 0回复量 关注量
  • 关于PIC KIT3.5 不能脱机下载 dsPIC33E 系列 问题

    可以正常连接电脑对 dsPIC33EP系列 下载,编程, 但是不可以脱下载 点击 Programmer To Go PICkit3/PICkit4 Main Project 输出窗口显示以下信息 ***************************************************** Connecting to MPLAB PICkit 3... PICkit 3 is not in programmer-to-go any more. Currently loaded firmware on PICkit 3 Firmware Suite Version.....01.56.07 Firmware type..............dsPIC33F/24F/24H The Programmer To Go operation is not currently supported for the selected device ([color=rgb(46, 48, 51)][backcolor=rgb(255, 255, 255)][font=Arial, "]当前所选设备不支持)[/font][/backcolor][/color]

    dspic33 ck PICKIT PICkit3 RAM program

    1429浏览量 1回复量 关注量
  • dsPIC33EP64GS505汇编与C混合编程问题

    [align=left]您好:[/align][align=left]我想在汇编文件中调用C文件定义的变量,但编译报错,具体做法和报错情况如下:[/align][align=left]C头文件(.h):[/align][align=left]#include "xc.h"[/align][align=left]#include [/align][align=left]extern int16_t dcmCorrFactor[/align][align=left]C源文件(.C):[/align][align=left]#include "Variables_s.h"[/align][align=left]int16_t dcmCorrFactor = 32767;[/align][align=left]汇编文件(.S):[/align][align=left]#include "Variables_s.h"[/align][align=left].include "p33Exxxx.inc"[/align][align=left]mov _dcmCorrFactor , w12 [/align][align=left] [/align][align=left]编译时报错:[/align][align=left]\support\dsPIC33E\h/p33EP64GS505.h:26785:Error: Invalid mnemonic: 'extern'[/align][align=left]感觉像是头文件调用冲突了[/align][align=left]麻烦哪位大神帮忙指导下,如何处理,万分感谢!!![/align]

    4G 汇编 混合编程 dspic33 include

    2208浏览量 5回复量 关注量
  • dsPIC33CK256MP508在线仿真出错

    能够正常烧录程序,调试时,出现如下错误,是什么情况。Fatal error: 0xc04 The target device is not ready for debugging. Please check your configuration bit settings and program the device before proceeding. The most common causes for this failure are oscillator and/or PGC/PGD settings.

    仿真 dspic33 ck se ce

    3708浏览量 8回复量 关注量