首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SPI PIC PPS映射

SPI PIC PPS映射
EN

Stack Overflow用户
提问于 2019-04-19 14:08:15
回答 1查看 374关注 0票数 1

你好,我需要使用SPI与双DAC通信。DAC:DAC

我使用PIC 18F26K83。我只会传输数据到DAC,我不会收到任何东西。这就是我如何在我的PIC和DAC之间建立连接(见附图)。所以我的问题与PPS映射和引脚配置有关: RC7连接到数模转换器的DIN引脚,RC6连接到

我是否也需要将我的管脚映射为输入?这就是我如何做PPS映射的,但我不是很确定:

我使用RxyPPS寄存器(第267页),以便通过使用表17-2 (第268页)将引脚设置为输出源。

代码语言:javascript
复制
RC7PPS= 0b00011111 ; //DIN, RC7 = SDIPPS
RC6PPS= 0b00100000; //CS, RC6= SSPPS
RC5PPS= 0b00011110; //SCLK, RC5=SCKPPS

因此,我相信这足以将它们设置为输出。我是否也需要将它们设置为输入?

我知道这没有意义,但我对使用RxxxPPS寄存器感到困惑。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-25 18:19:36

如果您要将数据传输到DAC,我会假设PIC应设置为simple模式-即,SS引脚将在PIC上不使用-因此您不应为RC6设置PPS,因为它是DAC的CS引脚,它应设置为简单的GPIO输出

代码语言:javascript
复制
LATCbits.LATC6 = 1; // initialise high
TRISCbits.TRISC6 = 0;  // output

您还应添加PPS锁定/解锁序列,并可能需要将SCLK设置为输入,即使它是单向通信。

代码语言:javascript
复制
// disable interrupts (if req)
INTCON0bits.GIE = 0;
// PPS unlock sequence
PPSLOCK = 0x55;
PPSLOCK = 0xAA;
PPSLOCKbits.PPSLOCKED = 0; // PPS is not locked

RC7PPS = 0b00011111; // SDO (DAC DIN) RC7
RC5PPS = 0b00011110; //SCLK OUTPUT RC5=SCKPPS
SPI1SCKPPS = 0b00010101; // SCLK INPUT RC5

// PPS lock sequence
PPSLOCK = 0x55;
PPSLOCK = 0xAA;
PPSLOCKbits.PPSLOCKED = 1; // PPS is locked
// enable interrupts (if req)
INTCON0bits.GIE = 1;

旁路-确保SPI设置为主模式和“仅传输”模式。

代码语言:javascript
复制
SPI1CON0bits.MST = 1; // bus master
SPI1CON2bits.RXR = 0; // transmit only
SPI1CON2bits.TXR = 1; // transmit only
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55757365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档