|
|
使用下面的例子代码,不能使SIMO和CS为低电平:6 I+ `' `2 g* b' I6 Y) \
void PSCInit(void)
; U# M4 V0 M* q{
, e5 [2 @6 A8 u/ e( [! t/ K PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE); Z: i& k0 E( h5 l% ?# v
}) L- k1 m7 a+ m+ H/ D
. i4 L* T0 J8 c! Yvoid GPIOBankPinMuxSet(void)
- B2 c' y5 o0 j. s4 }* M4 A1 x{2 J9 A4 T3 q, ^0 n: {% h x
// DRDY ------------ GPIO6[14] -- 111
, h4 C) R" n8 T% t3 e // SPI1_CLK ------------ GPIO2[13] -- 460 }3 a% o/ R3 K
// SPI1_SOMI------------ GPIO2[11] -- 449 e" T1 Z' h& G% @3 }% F' z" f
// SPI1_SIMO------------ GPIO2[10] -- 43
/ L) {# i+ U" T. P* g' m$ ]% c1 n6 G // SPI1_CS2 ------------ GPIO1[0] -- 17
2 k9 k' k9 Y- f1 d // SPI1_CS3 ------------ GPIO1[1] -- 18
0 G/ o6 R1 c; s3 y# O! e0 j% B+ l5 Z7 z9 p* K: k: S
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
1 p, t, t" s4 p7 w HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
) d# F4 E+ q& c* | HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
8 Q) c9 m; B( x" v% [) Q
" ^! X6 ]* H D, q //DRDY4 m u6 ~: X5 Y/ @" K/ k
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY, f/ H2 C8 v2 H
// CS2,CS3
. B: ?9 \9 a+ j) w$ @ GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
' b' ]8 v9 M' T4 g GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
* m) i3 I( a) l0 q- e9 O //SIMO
2 ~- w9 F, {1 n& u9 J; K7 o GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
+ e* w5 i6 k" q //SOMI9 S' `* F1 K) S, M5 I
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
& X4 z' N0 a! A9 `; e) l //CLK
' m& b! \0 \& ~/ x3 w. U0 I+ m$ [ GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
. F% L) | |1 O; z# U3 U$ H% ]% j+ h. l; n) Z( s9 X
// LDAC7 u; r! h) t; I) o
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
5 R. h+ ]3 x$ N3 g' F GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
% O( x6 B/ a8 R) z0 X3 Z GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
$ ^1 x, u: y8 ]; `( N GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
( j6 D- b; U3 J5 q GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY$ s( [8 ~/ {- _) x$ {1 J8 |
}
' j* C7 G0 W9 Y. W! W" \1 J/ I
# `# X6 J# a# I! L# T6 J5 uint main(void); T" S( D+ w1 _; C
{0 C* j# J+ A& F: _4 H
// 外设使能) v+ s/ u& l1 b9 I J
PSCInit();% s9 l* j @' s. a& q4 @
/ C3 P# @+ i- J; m ; a2 N+ N: r" j1 T p' `# [; W8 k
// 管脚复用配置
) j. N& q( }/ A! n% [ GPIOBankPinMuxSet();
6 |6 V3 t* K8 q" ~) P# ^& l7 M. Q for(;;)
7 i1 u6 e6 O( Y8 `7 y$ D {
( P! B6 {: D4 y4 U! {8 |1 f/ b SET_SCLK();//时钟正常输出
5 Y: U) u: v8 r. n) b GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
) @3 ^$ I( m8 I, F1 S: a/ m' G5 Q GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS32 t4 W! e) h0 Z8 W) J
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN9 d& s% y6 U! q( o) a
" i9 {: u J6 F1 \1 z3 ]+ K
delay(20);
: z# b8 ?3 D7 `* C+ ]% z/ h/ a CLR_SCLK();
B7 d1 E2 Z. `$ t GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
* I8 \% [7 L+ T GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3; `( t* |- S" B0 e& ?& i
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
) R( N: Z3 i5 C* z; M: V% P! s delay(20);
( o+ O% d; d8 Y& r$ ` }1 T7 J- L" F/ g6 i+ b) J0 q6 p% C
}
& V5 Y4 h8 s& u% Q- C0 F |
|