|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
3 p1 J- t/ x. v' [/ ?1 L) @% [9 Wvoid PSCInit(void)
9 C9 e# M) C' y/ N) u: |) r$ Q0 }{
% c& ~) K# n7 `1 \5 G6 v* w PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
# n5 T5 L" ^4 O, n, u1 U}' t9 @! _) Z" J- I
$ T$ ^' v# Q* {- Hvoid GPIOBankPinMuxSet(void)6 w: E) W' d, }) B+ b% X
{5 a7 J3 ^' z% ?2 y- B
// DRDY ------------ GPIO6[14] -- 111
3 H. A Y7 M& ] ? // SPI1_CLK ------------ GPIO2[13] -- 46
; A( E n, E" N5 ?" } // SPI1_SOMI------------ GPIO2[11] -- 44
& v/ o6 P O `6 k; y. d // SPI1_SIMO------------ GPIO2[10] -- 43
) d1 F% y3 S2 U' J+ p& v // SPI1_CS2 ------------ GPIO1[0] -- 17
+ H9 N% o* t0 V/ x // SPI1_CS3 ------------ GPIO1[1] -- 18
/ ]$ m; T% g/ C" l
' V: D& w1 \6 g: p HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000); j1 {, N* v y3 ?/ O8 a
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);6 V6 g" {! Q! a: r6 \
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);& F5 ]; U4 m+ C4 a* m4 R- h% @
# j+ E. k1 C9 C2 x3 o! @2 B
//DRDY
" Q/ m, |( l! j% r* T v& p GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
. X1 k/ S7 H) m- k // CS2,CS36 n: f% D0 p/ c9 L& m
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
" k$ O V# v5 ~ GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3: [" y' N0 {) R. v0 m8 Y4 [
//SIMO& T- a& S' }7 }' \0 c; A$ i, y8 M/ q) d4 o
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO( W7 n, K, v0 a/ l$ `& V, @
//SOMI3 M( I/ l1 K6 ~6 ^; A1 L: A1 q) _
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI( d2 n3 O! Q$ l9 A3 N( b @
//CLK
1 r6 J3 h2 J! ~- j5 o* c2 u6 ]6 i& x GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
. `5 D( ^6 s& s( G* @3 d4 s I8 e) ?, H* i- o
// LDAC
! \8 V I! U5 `. e- U7 a+ _ GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
3 H: f0 w4 H8 @' H$ ~# B+ p GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
6 @" B% U! V1 ], J0 Z6 _/ f GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
& \; l6 ^ Q3 n; g) T2 X GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
! u' ], z' m' l' C5 l) E GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
0 Q' R' b6 s2 |) p}: a: J# w) e" S5 q: x3 ?3 v
" e J! J9 D# E8 N! F- }( F+ s
int main(void)
& r4 A* p) v# O% d& ?, c{$ I K5 M& g8 b' m
// 外设使能
& w+ Q5 J0 V9 s% ]2 R* F$ k PSCInit();$ N' Y! ]% ^# s: l7 z
8 p5 M9 b5 O" z& _% Y ) V1 `/ g7 ^ ]5 W2 y
// 管脚复用配置- n6 E( i' U) g7 V
GPIOBankPinMuxSet();! i! y0 U3 D, A, R3 ?# F
for(;;)
# A8 J4 J& T, _: T8 o) u- x {
% W. [0 v5 H3 ^9 z. | SET_SCLK();//时钟正常输出. i* I* Q' {) o
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
( U6 a' {1 W# L' o/ w/ I/ A GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3* o4 E/ h9 M) R
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN* B4 K+ F' K, J% D0 W& k
# l: q, h/ | u" s5 Q9 o
delay(20);
( q3 F3 u- ]: p$ w0 T CLR_SCLK();
5 G6 j8 L/ x. f5 } GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
, K- z; [% F0 p' u: c GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
" `1 N* O2 f! d GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN5 a7 Q" M/ y% S2 [) c
delay(20);2 z5 s; y. B5 [* X1 j
}9 `7 i+ {" r* \& W
}+ ? s' E: F) D5 a- e* P( w
|
|