|
使用下面的例子代码,不能使SIMO和CS为低电平:' h; A2 X# j+ M4 \; ] {+ L4 D
void PSCInit(void)
0 m. W% e" Y, }5 R+ f6 x* z# d{
9 i3 E9 c, ^& p) k! L- L/ ? PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
0 j3 C+ [7 R! |' u}
, G. @0 _" S$ c1 D" V6 f" [5 P& i) H; Z1 d: |, u4 Y
void GPIOBankPinMuxSet(void)
# m( n- \0 W: B4 {4 q* i5 @' \. \) S{
5 M' J' O3 ^2 [$ f' I2 e' u // DRDY ------------ GPIO6[14] -- 111
) j! ^! B8 J' @# Z; s // SPI1_CLK ------------ GPIO2[13] -- 46
2 G; G/ A& Y/ v4 ^9 {+ b // SPI1_SOMI------------ GPIO2[11] -- 44
0 K! \7 d, n" p: O7 b* S5 q( r/ P) ? // SPI1_SIMO------------ GPIO2[10] -- 43& ]5 Y$ F, q0 O6 m4 w
// SPI1_CS2 ------------ GPIO1[0] -- 17
n( K; P8 q! E6 s* i& r" ? // SPI1_CS3 ------------ GPIO1[1] -- 18
: ^( ?, r D% M) P* @1 v2 ]6 Q4 {* g8 z- D
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
, z: |8 ?) ~/ Y/ }1 S9 s; j HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);# M0 s9 w0 [) _! z2 K4 {
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
' P8 s8 T8 c5 m* T# O. x, ]
0 a& g/ k1 i8 Y //DRDY
/ J3 _& c5 P$ |& ~ GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
5 ^7 n6 W1 ]; Z4 U // CS2,CS3
2 R! \. f+ A* m$ H GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
[$ ]# \6 T7 t* n GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
, Z8 a/ J3 Q7 x* X/ H$ b //SIMO
/ x* a) _9 R0 H7 S+ U GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
+ j7 @: J0 }1 J/ Y# p* T7 \8 W Q- D //SOMI
! C1 X6 |9 |$ _ GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI6 B7 _2 {- f6 i
//CLK8 x/ \" W. ?% T
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
, q% j7 ^8 T8 \! l1 Y+ U V' z; u, Y* z& _2 v3 P4 v5 B
// LDAC3 \8 G; |4 B- ^% E( S
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK6 k X* N) r1 i& E; q: v
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
& U- K" v6 E/ S9 l' a GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
1 S! ~) o# s, J7 N GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3+ f, V: v `: ^0 m& a
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY3 _2 b, N. n6 a/ C+ Y
}; x2 H- k( T" y3 E: e
) H3 w: h! ?! h" F4 K( w
int main(void)5 z) F1 U2 h1 m1 ~7 X4 i
{
3 H3 \! o$ }/ k6 h' }1 L2 _" N: a // 外设使能, K: O( p' P* b8 [8 l4 E! f! ~
PSCInit();
+ }. }, e. o1 X8 _2 z# u+ [3 x1 Q. I5 f
& n8 o! u' _" X, H7 |/ z" j2 D0 M: b% p // 管脚复用配置4 c z- R0 K4 U; U
GPIOBankPinMuxSet();; \7 d, n+ L- V, R* o8 t l
for(;;)
% k3 j3 D9 {- ~8 a3 j% n5 c1 } {
. N& v1 h) j: f9 a, s1 Z SET_SCLK();//时钟正常输出* m5 r/ a( g2 j
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
; z2 ]6 w9 {- g GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
5 [& v) y6 i) L$ Z8 g9 [- n& _ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
]. I1 ~# q7 x( L4 t0 C6 [4 H' K
delay(20);& a' M6 e: Q! q6 i* H
CLR_SCLK();$ V5 B: G2 I$ R* T8 ~; ]
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
( E# V& \" A2 s7 O GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS38 Y4 Z1 B! w9 s3 ]. j: O9 h
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
' g; o% I" f& @3 U# z5 i7 u delay(20);& K0 E0 `% W/ j$ _+ L
}
- T, z/ H' h( ^$ U. x: j/ E$ ~+ h}6 g( V$ `& r. }) M) O. k: x
|
|