|
|
使用下面的例子代码,不能使SIMO和CS为低电平:! Y1 Q" j5 B, ~& W8 P0 [
void PSCInit(void)' _0 V, f+ B; a/ P
{
( s, g0 J" D) q; ]0 T$ S2 d PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);) q+ [, l0 v& V. X T) Y* o
}
# u0 s; A: ]% J; k) P+ x5 W w4 i( P. N" [
void GPIOBankPinMuxSet(void)* q3 }& P+ ^" M, `
{
9 d' k8 M1 B9 K. n+ S6 u // DRDY ------------ GPIO6[14] -- 111- X7 M. g4 h( G8 T6 b8 K2 t
// SPI1_CLK ------------ GPIO2[13] -- 46) y4 i9 F2 `$ m1 [' u# A( W
// SPI1_SOMI------------ GPIO2[11] -- 44
" j2 m0 u$ l4 n* Y) L; a9 s // SPI1_SIMO------------ GPIO2[10] -- 433 ^( d6 I2 {) e8 V, B# M4 f# R
// SPI1_CS2 ------------ GPIO1[0] -- 172 V' i% o5 N+ p. s2 ]/ r3 c
// SPI1_CS3 ------------ GPIO1[1] -- 18
% r) n8 E J8 \) {0 I+ w
' C, X2 x' J$ C% q; T; L4 ` HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);3 t& O) ?$ V) ]# V
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
' E. \8 Q O+ {8 ]" Y! u- f! o HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);9 P, X: G& }& Z4 |. j
2 z r. g4 h! m- r# ^: }( K) a0 f
//DRDY9 q$ }- ^1 U/ [5 _) Z/ D
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
' y$ F8 a2 Q/ h% _ G$ _% B+ v) P // CS2,CS3
) X; b) C* r) \$ c4 Y GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS24 w+ {; V$ r, ]5 k r6 U
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
4 L! `. W1 x5 f" A* |6 N$ a //SIMO
. `5 C5 d8 `2 F GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
& l Y6 }( _$ r J: i. O# P //SOMI+ a. S5 C4 _4 g1 g+ F
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI, g/ Y% F* g* e: H1 ~& _8 t3 N
//CLK
# l0 ?0 B K0 k# @ GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK; K! F/ n5 @( H: \
: M' i- i y+ f/ g b1 M // LDAC& j h. ~& e1 c- D6 B& P- w$ E U- p
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK: ^2 y2 G' @, w+ D! _1 n
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
8 p6 l7 D; E8 P( g4 N GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2+ r2 x; Y- `4 W1 b
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3/ @* ]! G! z" s2 j$ T
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
, m+ O' U2 K! V; m( L}+ C* }/ |: g0 @, I: ]# w, S: B1 h8 X
p' m9 h6 ?( h) c/ X" h
int main(void)4 `" O% }3 e8 c0 N
{
/ R9 l- D. `4 l' O# E0 E // 外设使能4 ?5 v0 I# U! L% K
PSCInit();5 e9 h- ^# C$ ~: ~
. u0 g0 E+ _1 Q" j& l9 F 7 [8 c( O; V9 \/ }7 |
// 管脚复用配置5 v! r: D0 j6 e0 o3 u. Y8 I
GPIOBankPinMuxSet();
( R6 v" p# \2 G# O( E. b for(;;)* Y/ @% N2 V1 j2 ^5 g: [
{
" Z" E/ k* s3 }; h SET_SCLK();//时钟正常输出
6 i5 @" d" g1 l; y GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
5 _3 h/ ~: o& q: L6 |+ ^+ r1 ]. s GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
* d3 Z: {+ ?; Z$ ~( g GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
# R( i! B* j; A/ ]7 N6 }' V) M, j" D0 h s% \: q c7 O" p
delay(20);
, z& h( {0 H$ V o8 t CLR_SCLK();
# p( V3 \9 x: R6 U7 t, R% Z T+ v GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
4 q' K" z9 B& D4 i! Z3 P5 x+ \ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
& T# R6 g; V& y: Y( Z+ k GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
6 u) R3 u1 u7 J7 t* p$ j2 ?9 M0 s2 o delay(20);
" ]' \3 R" u: ?9 b- g0 a }) _8 q& V, X" H) i9 y+ w, y, o
}
7 v) h# g) Q1 W: T x |
|