|
使用下面的例子代码,不能使SIMO和CS为低电平:* E# `1 }& |$ t
void PSCInit(void); N! K H. O" B4 O( A
{
% \3 g7 `: A/ T4 r, o. S PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
' Y9 o! ^- V5 y8 r}4 g6 I& P: g9 ^1 ]- c0 g$ h
! k4 T: d% t9 C3 R
void GPIOBankPinMuxSet(void)
5 ]% f4 x2 @# ?" Y6 c M2 v{
. a. I7 @5 `* z! ~) i // DRDY ------------ GPIO6[14] -- 111
7 F1 F7 p; C5 E% k E% t // SPI1_CLK ------------ GPIO2[13] -- 467 i! G3 f8 e; ~* P
// SPI1_SOMI------------ GPIO2[11] -- 44
5 B7 |* a" O6 j& x3 I7 y // SPI1_SIMO------------ GPIO2[10] -- 43
6 S/ L* W! y& Z6 Q // SPI1_CS2 ------------ GPIO1[0] -- 17
: g; d6 u& H% b9 w- }/ n // SPI1_CS3 ------------ GPIO1[1] -- 18% n7 i; R' ^9 n% h2 v
0 u" x! K9 F( g% _/ n/ H( H
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);' F- p$ \- U! _ ~2 N
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);5 q0 K3 O3 |* n& h4 _; e, y/ T
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
4 Y6 }! A. M- K5 J" p0 h; `! M) S
$ s% w ]8 J# _, U7 Z //DRDY
! {6 l& {/ ?# j; { GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY9 T( `" y4 e6 |
// CS2,CS3
5 ]1 l; I/ o/ K- x9 `0 F GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
# }! D7 |( P" S6 M: H GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
x3 |2 {, E! @; U* M //SIMO, C& k5 l) T% v+ p
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
+ K( @7 ] `9 L //SOMI
6 K8 H* E6 r) U' c/ T5 L+ h GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
) R2 o/ o9 O6 M& L& r3 ?5 s1 k# }5 m //CLK
; O, [2 A8 g1 Q1 Y) f# n GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK; o1 b# l4 T* g% e
5 X3 B6 s2 ?/ H* g5 l* z: o
// LDAC
/ O! P8 p" c$ } GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
( O# R2 z1 J" J( l GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN1 k/ P* i. H; P0 M. r
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS28 W8 O% a; n1 S5 n
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3+ |/ e' g& z# K) \( x# S
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY j2 v4 s1 y$ J# y. t, f2 ?" M
}2 C& V# P! l. W9 h$ `
+ v) {6 a5 u) o& z
int main(void)+ s7 T: d2 {2 Z$ O/ H5 q, k
{. p% w0 n6 k* I' V
// 外设使能
% b# o, I4 X2 _6 _6 @2 U PSCInit();
& z6 S* V, f$ P6 H2 L$ }. d/ S6 p$ b O8 v. c! Z8 S
4 H1 i8 S2 w; }8 { // 管脚复用配置
! f7 t3 u* c7 X- r! I GPIOBankPinMuxSet();
' P: n6 I& l- U4 s$ s5 d for(;;)
6 ^$ h/ i1 R$ L {
`% } F R& [! \ SET_SCLK();//时钟正常输出7 \5 B9 p2 a- G
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS25 z. x2 U: X/ C5 ^; A# ]8 F
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
: ?# q% g9 H! n/ q0 N GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
( G% {# I$ |4 L" ~9 _/ Z3 Y
/ @( y7 v% j8 h& t7 K3 L z' k- z delay(20);
% a' c3 k, Y+ h, u( o! k CLR_SCLK();# \' _+ U$ V4 r& A; l
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3" L N5 t( {5 n# N2 K
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3! U, X6 U$ ?- U# V5 M
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
/ Z: G ]( j5 b- \2 Z: N delay(20);9 m' e- f1 m/ ?5 Q' E
}" |' h% t' t; S6 W6 L" [! p a
}! C; T- V4 j+ |! v+ ~( D
|
|