|
|
使用下面的例子代码,不能使SIMO和CS为低电平:, ^* c4 H+ H9 A) U$ J8 D4 {/ |1 _
void PSCInit(void)- S+ M: T, e& f2 K* ^+ ]( y: G
{
: N' J& L$ }" Q9 E PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
* A M6 J9 t% c; h- ]}
, d! J) B! H5 m/ u9 D
" Q# C3 c6 r2 B+ l; U wvoid GPIOBankPinMuxSet(void)
3 ~3 `. e$ A6 f& U' {4 d/ t{
3 K- m3 t+ e" a1 X% o // DRDY ------------ GPIO6[14] -- 111& y+ v6 b* ]' p7 e3 f0 P3 H4 \
// SPI1_CLK ------------ GPIO2[13] -- 46
- |( i1 G8 r$ w4 s0 N m+ C' m // SPI1_SOMI------------ GPIO2[11] -- 448 t. Q. w& R" Y# d: F: ^3 D6 F
// SPI1_SIMO------------ GPIO2[10] -- 43
6 R: V" O. g3 Z" L // SPI1_CS2 ------------ GPIO1[0] -- 176 e& S% }6 U( w9 _' X! C1 k& F
// SPI1_CS3 ------------ GPIO1[1] -- 186 j6 s) H9 o/ V+ E, ~! Z
" }$ k7 v* b: r
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
3 Q; ]9 @* X3 A$ i$ t( W HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
% b( d& d. q4 B5 o HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
! a; x8 m1 q2 t h" @6 F3 h% _6 |3 z6 i: T1 b
//DRDY
; X# T+ K2 C4 L8 {2 L2 W# q GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
& A# _8 ]8 r( T; H7 }* W, b // CS2,CS34 g% c' t3 A* L9 g+ e M6 g. F) H
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS29 z: ? ]; x x% O
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
+ ?, [* }/ ]1 L5 D2 p& o) U/ B4 ` //SIMO( V5 E# \6 A' i0 G; M; t
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
! X$ G4 l' t6 e4 S% E; J" v* |6 X //SOMI
1 J/ Z$ j5 v9 z* M, h; @& j& f GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
3 T: B+ ~9 q% m( X7 T& Y //CLK0 R/ e. A1 i s. H0 ]/ V% m6 |
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
: r: `7 p# S) p+ y, M& m9 J1 J- m6 c% t2 r+ r- b
// LDAC
5 ^4 j& ^' x, i1 x& j# @: M( v( z3 a GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK' _3 ~" ]8 ]) S5 A
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
, {, M( e4 I, W7 O GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
2 Z, x- R2 H0 V5 j$ h GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS30 d" `: f- c+ K) F; N% a
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY Y' f# P6 @1 h6 c% X: b& T
}
, `' G. A6 O( R" m! k8 l7 h* a5 l4 `( c" M+ D1 y
int main(void)
! C$ |% m& | N. s, p{
y" o _4 d' r // 外设使能
7 g+ D( Q; `1 W2 S PSCInit();
0 g# z' O4 {2 Y/ \( R$ k
$ u" a6 ~7 f# \# F8 W
% e( g* h, U+ q4 D3 g7 W. r // 管脚复用配置& X9 f$ k8 t( i; ~; o& U
GPIOBankPinMuxSet();
1 m$ ^9 t0 w3 L% \ o: Z+ \ for(;;)" Q' y# ~# Q# a; z: C4 `) E
{! c) g2 Q6 w, r% Y i; X
SET_SCLK();//时钟正常输出. f @ D3 H9 ?, F6 y
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
) ]' P3 x# z8 l5 Y+ ~ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS32 P! ]1 T- a! X) d& ]% U% u
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
( e& q8 [; R! Q4 f, T
. n# L4 K6 p: U, F* i delay(20);( I, S, l& R2 a- m
CLR_SCLK();2 C8 t" b4 R; k5 e( i* D% g& f% @; s
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
, {% x. h4 f5 `: L: _ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3& ~0 b" q! R, u$ G
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
( N4 l+ N7 S! c6 B4 S8 k+ y, J delay(20);% C: _" O% _) d- z# p, a6 O b
}/ {6 h- X5 R" q( |7 u% @7 I
}8 v E5 O( O+ e7 u
|
|