|
|
使用下面的例子代码,不能使SIMO和CS为低电平:7 e$ {6 G, Q: R8 o. N/ Q; U, J
void PSCInit(void)
8 B) E# s3 `" g8 V! h{' o Y/ X" H0 n( {8 ^( w2 ?
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
( i, S' W/ G0 f3 o. l9 b}
, f! ]' F8 B7 s. y
' Q. L* C6 f& J1 `& y% e6 }void GPIOBankPinMuxSet(void). R: q) _ z0 h1 L/ r! S$ T
{
/ T4 k0 P1 R; T/ z, O6 l0 M // DRDY ------------ GPIO6[14] -- 111
& {8 O u; p9 G: U' M( M // SPI1_CLK ------------ GPIO2[13] -- 466 q% j: a' b- m. @( D: h
// SPI1_SOMI------------ GPIO2[11] -- 44
4 [5 T5 f A, J6 U3 c7 F // SPI1_SIMO------------ GPIO2[10] -- 43
- h; I6 o s/ |5 { // SPI1_CS2 ------------ GPIO1[0] -- 17
q& y7 z0 _) s& C2 W" T // SPI1_CS3 ------------ GPIO1[1] -- 18
/ L! @; W. u3 v
8 k) G+ i7 H# T# m& T. a HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);1 X, H5 F c+ g3 p) v+ C0 S
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
% o9 s. L2 u L4 n3 ^ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
0 I9 d4 j5 ?7 o/ Z; y$ z, Z2 [, I6 D6 N
//DRDY
$ K/ c0 _2 B5 b8 w GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
* u+ _3 D' G" h) o' R9 _7 c: B // CS2,CS3! B* w1 F0 K3 U! _$ i# ^4 r+ b6 v
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
# V0 R1 P/ J+ z( V' N GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3! ]( b. T3 J9 u, C7 k8 A
//SIMO
. r1 ]- @ ]0 N/ l1 X& W: l# V* a GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
+ C' S+ h/ v8 J- d. N7 s //SOMI( n: k) r8 {5 ^- U- ~* t
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
; Q1 u+ g1 `; _ //CLK7 ]* K% o t+ [" [4 I! R
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
* u9 s) Y. h: n. W. H% C( _' P% E- b+ Y4 \6 Q: m, }0 I/ A! w3 D
// LDAC
, q6 o! z, _4 P1 X1 ^ GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
8 y# m, X' j3 ^# N" p0 B+ j. |. r GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
+ Z2 U; @& J% a1 X, c) P) N" G8 X GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2/ z' e+ Z9 N# P1 Y( t$ h
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3: s% ]( c: D" w N- g
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY% a) H5 ]! g* M5 m. A1 I
}9 Z/ u* a& X+ A* v! C1 [5 _
. m8 q- H) \9 b- b0 m
int main(void)
$ f3 J7 s( F5 P{
) m( M: W- M4 R // 外设使能6 W- |" `& J \1 ]
PSCInit();' }% A4 w x# i8 G8 k0 r. ~
7 u* k5 I, y# z, l- [: Q
) g7 _, G" Z( P: e
// 管脚复用配置
) \1 p$ ~7 `: y6 t1 E$ h+ i! ^. O( L GPIOBankPinMuxSet(); T0 A/ w7 Y! @9 g( h+ _! S
for(;;)
6 h6 f9 X3 a/ ^/ K! |- h {
: ], c+ T5 K% m& ` SET_SCLK();//时钟正常输出
' s8 Z4 O7 j+ _ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
& l% ?- _) J5 n4 |0 X1 e GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
$ j) M. l4 F! D GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
# ]' `& w8 O9 r5 k+ G2 _7 s9 y" ^7 X/ } L
delay(20);" g5 ^0 J% r- R; b6 h
CLR_SCLK();
3 G/ t, E3 l+ [0 D GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
0 i# ?9 B! Q; a* i+ x& v GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
, Q7 o3 r. N' v" o! D$ X9 [ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN* s. }# V* p' W$ D8 B
delay(20);, w& _' v0 D/ M: X% D; r( r
}4 J* I. C# O) r L
}# V* d9 z6 [' N4 d. S/ `7 `
|
|