|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
( @" s) K3 I. w3 n: F" P9 \void PSCInit(void)
3 {6 ^2 m/ G6 V! R5 w. ^& y0 R{
. B$ N9 g. E4 q/ h$ u- I PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);, {' S1 y/ Y" v. \8 _) j! |# L
}9 @# p0 | R% v# K& f& E, h P& ^
; b! ~7 N2 H3 ] c& N
void GPIOBankPinMuxSet(void)
+ ^" w' ?' V9 L; G% z{
1 N0 ^) A' O7 M: w: m$ ? // DRDY ------------ GPIO6[14] -- 111
H+ [$ @& o5 V X4 M$ o // SPI1_CLK ------------ GPIO2[13] -- 46
. }! a9 A& I, y, q; t // SPI1_SOMI------------ GPIO2[11] -- 445 Z- M3 \1 {) V, w% P
// SPI1_SIMO------------ GPIO2[10] -- 434 k1 p% g! R2 {* S, L! {
// SPI1_CS2 ------------ GPIO1[0] -- 170 F; N) d& H3 P- G
// SPI1_CS3 ------------ GPIO1[1] -- 18
. z( T6 i! @( N! X; g4 S. G9 s5 x$ ? G, r' `/ u. E$ l: {! u8 Y
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
) E# W u5 I2 _& z HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);0 J/ A( ^6 {, C# E; W" o
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
$ `( N- {- B4 i+ j Y: ~7 t. R1 [
! }+ d, I, ~/ N" g; L0 S$ ? //DRDY
1 p0 I8 ^/ z0 _* g- d GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
! @4 \* B& d- N/ Z: w4 d2 s8 s5 x" Z // CS2,CS3
& Y$ V* `7 U; x GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
$ s# Y1 P7 O# o7 U: `4 k) p GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3) r" e( y9 ^2 |0 C% ?
//SIMO1 L* S1 W, l) ?8 g
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
# G' F$ c2 _; R) C d. G! N //SOMI. K# W/ s- m7 H! s& x- T2 q
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI; y( ^7 ^/ V7 }7 ~& n
//CLK: U% [+ J1 t2 z. c3 b+ ^- }
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK# _# [% t& G* p6 [9 l
/ I c! ?* f$ K( Q2 M' n: I! g
// LDAC
^$ V$ F) E3 a) A GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
* B, r& f5 u( C5 N GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN9 I" _" k, m7 N' F3 X" T3 P5 t
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS25 x9 c3 V" J; M7 Q) z
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3" X5 `4 I) l' Z" ]+ N/ B+ g' i0 ]
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
/ Q3 y( \. a; `' ^7 l1 A Y/ c}' D E4 K1 J1 P# F- Q3 T" @, u; K' S
" _7 Z2 o! U2 }int main(void)/ `; w* q" @1 J6 P; L3 C
{
; G) @& p6 ~( ^9 c! Y4 j // 外设使能
5 x' L( b/ p. w. J. J0 M0 ^ PSCInit();! p7 N: e% m1 c& |! z" Y
T |: \2 S- Y( w0 ?
9 M8 [+ L) b* L9 F // 管脚复用配置
% F& W0 u" o4 S GPIOBankPinMuxSet();
) G" T/ N9 ~7 G$ _6 P for(;;)2 }* A, e/ p. H5 M- J% ]$ ]7 `, P
{
* s3 m5 [$ A" g7 t SET_SCLK();//时钟正常输出
5 e1 s- z) ?2 Y: I E GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
. k4 y3 q; i: F! r. D GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3: L* s3 m# o, b' s$ [7 G+ k; V+ f
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
6 z' |; z3 o4 d/ U. F
' T: m8 E, b& s5 R% c delay(20);: g6 T- R9 R [' h2 ^
CLR_SCLK();5 F7 |) g# j8 O! S8 w
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS35 F6 V3 s8 u% p+ h- |! F
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
9 E# m5 e, Y0 ^% h3 l+ Z GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
4 ^+ H* d9 L: k B6 b delay(20);+ G( O0 r B5 J1 m
}
3 N \, }; q8 S( q}
9 M5 P$ G* z( y9 V/ I- @- N |
|